我想創建一個需要兩個點的箭類。這是我有:創建箭頭類
struct Arrow : Lines { // an Arrow is a Line that has an arrow at the end
Arrow(Point p1, Point p2) // construct an Arrow from two points
:p1(p1), p2(p2) {}
void draw_lines() const;
Point p1;
Point p2;
};
這是我有draw_lines的()const函數:
void Arrow::draw_lines() const
{
Lines arrow;
arrow.add(p1, p2);
arrow.draw_lines();
}
它可以通過鍵入Arrow a(Point(x,y), Point(x1,y1));
。然後應該使用(x,y)(它變成p1)和(x1,y1)(它變成p2)來計算箭頭,作爲方向的嚮導和(x1,y1)作爲箭頭基點。我希望箭頭看起來像這樣,只有堅實:--->。我如何計算箭頭指向的角度?箭頭的線條需要爲兩個x,y座標,例如(p2.x,p2.y,(相對於p2的箭頭的後面的x座標),(箭頭的後面的y座標相對於P2),該.X和.Y記號返回X和p點的y座標。
感謝您的任何幫助。
箭與什麼之間的夾角? 'atan2'(http://en.cppreference.com/w/c/numeric/math/atan2)可能會有所幫助。 – aschepler
您需要計算線x,y - x1,y1的斜率,然後使用一些預定義(或可能的話)使用源自箭頭軸末端的點 - 斜距計算箭頭的端點從軸的長度算起)與箭頭大小的距離。 – Joe
@aschpler:謝謝,我認爲它需要一些關於atan()。我會研究這一點。我的意思是線條本身和箭頭線之間的角度。 – Hosch250