わかりました、既知の角度から光線が降りてきます。角度、光線の長さ、上端と下端の座標を知っています。定義済みの (x,y) 下端を選択し、sin() と cos() を使用して、角度を維持するために光線の上端の (x,y) 位置を決定することができました。しかし、これまでに行ったことは、光線を開始位置に描画することです。角度を保ったまま動かすには速度が必要です。
この例 http://www.processing.org/learning/topics/reflection1.html がありますが、その速度を計算する方法がわかりません。皆さんが私にコードを投げてくれたり、その方法を理解してくれたりしてくれたら、とても感謝しています.
これをProcessingでコーディングしています。もしあなたがこの言語で私に説明してくれるなら、それは素晴らしいことです。ありがとうございました!
ル
void RayRoad(float angle)
{
//h is the hypothenuse of a right triangle and also my ray
//knowing the angle and h, i calculate the opposite and adjacent
float h=3*linii, o, a, Jx,Jy;
float theta=radians(angle);
o=h*sin(theta);
a=h*cos(theta);
//(X1,Y1) bottom end of ray are known
//I determine de top end of the ray (X2,Y2) using a and o
X2=X1+a;
Y2=Y1-o;
MoveRay();
}
void MoveRay()
{
line(X1,Y1,X2,Y2);
ModifyCoords();
}
これで、その光線を直角に描くために必要なデータが揃いました。しかし、私はそれを移動する必要があり (下に移動させる)、(X1,Y1) と (X2,Y2) をどれだけ変更する必要があるかを知りたいです。座標を変更するたびに、もう一度線を引きます。