矢印線の引き方

(0,0)→(x,y) に矢印線を引き、矢印の矢にあたる二等辺三角形の頂点が(x,y)にくるように描いてみます。
矢の幅(底辺の長さ)と高さ(底辺から頂点までの距離)を、それぞれ W, H とおき、底辺の両端を(x1,y1), (x2,y2) とおきます。また、矢印線のX軸からの角度をθとおきます。
まず、頂点を原点に置いて、θ=0とします。X軸を横におく座標系で考えると、二等辺三角形は横置きになり、底辺の端点はそれぞれ (-H,W/2),(-H,-W/2)になります。
これを回転させると、
x1' = x1*cosθ - y1*sinθ = -H*cosθ-W/2*sinθ
y1' = x1*sinθ + y1*cosθ = -H*sinθ+W/2*cosθ
さらに、頂点が(x,y)に来るように平行移動すると
x1'' = -H*cosθ-W/2*sinθ + x
y1'' = -H*sinθ+W/2*cosθ + y
次に cosθ、sinθ の値を求めます。
cosθ=x/r
sinθ=y/r
ここで r=sqrt(x*x+y*y)
なお、θ自体を求めようとしても面倒なだけなので、やりません。
また、r=0 のときは、θ=0などとして、cosθ=1, sinθ=0 などとしてしまうと、devided zero が出ませんね。
この sinθ、cosθ をx1'',y1'' に代入すると、
x1'' = -H*x/r - W/2*y/r + x
y1'' = -H*y/r + W/2*x/r + y
となります。同じように x2'', y2'' を求めると、矢印の三角形の各頂点は、
(x,y)
(-H*x/r - W/2*y/r + x, -H*y/r + W/2*x/r + y)
(-H*x/r + W/2*y/r + x, -H*y/r - W/2*x/r + y)
と、すべて x, y で表現できます。


なお、正負符号を間違ってる可能性がありますのでご注意下さい。