Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在opengl ES中绘制箭头_Iphone_Opengl Es - Fatal编程技术网

Iphone 在opengl ES中绘制箭头

Iphone 在opengl ES中绘制箭头,iphone,opengl-es,Iphone,Opengl Es,1) 我知道箭头的起点和终点 我不知道如何画箭头。。我假设头部的另外两个点与终点成45度角 有人知道这样做所需的公式吗?为什么不起作用 1) 为头部绘制三角形(意味着使用GL_三角形绘制,而不是绘制形成三角形的3条线段) 2) 从三角形底面的中点开始画一条线段。韦德对这个问题的OpenGL部分给出了一个很好的答案;我将尝试回答向量数学部分。下面是我脑海中的一些伪代码: Triangle GenerateArrowHead(vec2 p1, vec2 p2) { // Compute th

1) 我知道箭头的起点和终点

我不知道如何画箭头。。我假设头部的另外两个点与终点成45度角


有人知道这样做所需的公式吗?

为什么不起作用

1) 为头部绘制三角形(意味着使用GL_三角形绘制,而不是绘制形成三角形的3条线段)


2) 从三角形底面的中点开始画一条线段。

韦德对这个问题的OpenGL部分给出了一个很好的答案;我将尝试回答向量数学部分。下面是我脑海中的一些伪代码:

Triangle GenerateArrowHead(vec2 p1, vec2 p2)
{
    // Compute the vector along the arrow direction
    vec2 v = Normalize(p2 - p1)

    // Compute two perpendicular vectors to v
    vec2 vPerp1 = vec2(-v.y, v.x)
    vec2 vPerp2 = vec2(v.y, -v.x)

    // Compute two half-way vectors
    vec2 v1 = Normalize(v + vPerp1)
    vec2 v2 = Normalize(v + vPerp2)

    Triangle tri;
    tri.a = p2;
    tri.b = p2 + ArrowHeadSize * v1;
    tri.c = p2 + ArrowHeadSize * v2;
    return tri;
}

通过将vperp1和vperp2乘以某个常量,可以更改头部的角度:使用值<1可获得小于45度的角度,使用值>1可获得大于45度的角度。