레이저 빔을 표시하는 프로젝트에서 작업 중이며 반사를 통과하는 경로입니다. 엔티티가 레이저에 부딪 치면 엔티티는 alterLaser (Laser r) 메소드를 호출합니다. 반사 광선을 만들기 위해서는 Laser.createNew (x, y, (+ x)의 시계 반대 방향으로 각도를) 호출해야합니다. 내 문제는 반사 각도를 쉽게 찾을 수 있지만 x 축과 관련된 각도를 찾는 방법을 모른다.x 축에 대한 반사 각도 찾기
나는 두 개의 벡터 레이저와 거울 사이의 예각을 먼저 찾았지만 그와 x 축 사이에는 직접적인 관계가 있는지 알지 못합니다. 인터넷을 검색 한 후이 화학식 I을 발견
은 R = 1은 2 초를 + - 180 (R)은 반사 된 광선이 X 축과 이루는 각도이다
. i는 초기 광선이 x 축과 이루는 각도이고, s는 반사 광선이 x 축과 이루는 각도입니다.
이 공식은 효과가 없었지만 의도 한 사분면과 다른 사분면에서 theta를주는 경우에 사용했습니다. 그러나 그것은에 사분면 발견의 새로운 문제를 야기 여기
내 현재 코드를 살펴이다.@Override
protected void alterLaser(Laser r) {
Vec laser = new Vec(r.getStartX(),r.getStartY(),r.getEndX(),r.getEndY());
Vec mirror = new Vec(this.getStartX(),this.getStartY(),this.getEndX(),this.getEndY());
double theta,thetaq2,thetaq3,thetaq4;
theta = laser.angle() + (2 * mirror.absAngle()) - 180;
theta = Vec.absTheta(theta);
thetaq2 = 180-theta;
thetaq3 = theta+180;
thetaq4 = 360-theta;
Laser.createNew(r.getEndX(),r.getEndY(),theta,null,this);
Laser.createNew(r.getEndX(),r.getEndY(),thetaq2,null,this);
Laser.createNew(r.getEndX(),r.getEndY(),thetaq3,null,this);
Laser.createNew(r.getEndX(),r.getEndY(),thetaq4,null,this);
}
}
이 질문은 수학 질문과 같아서 https://math.stackexchange.com/ – Andreas