在我的libgdx android应用中,我使用以下代码创建箭头
@Override
public void onAxonConnected(Pos one, Pos two) {
Model lineModel = build.createArrow(one.x, one.y, one.z, two.x, two.y, two.z, 0.15 f, 0.05 f, 5, GL20.GL_TRIANGLES, new Material(), VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
ModelInstance line = new ModelInstance(lineModel);
this.addArrowModelInstanceToRender(line);
}
与较短的连接箭头相比,如何防止较长的箭头变得“笨拙”?
我假设某个地方正在进行乘法运算,但是我希望它们都以相同的宽度和箭头大小进行渲染。使用createArrow函数可以实现吗?还是我必须为此建立自己的模型?
答案 0 :(得分:1)
一种解决方案是计算代表箭头的起点和终点的两个向量之间的距离,然后将该值传递给乘以或除以常数(或两个)的capLength和stemThickness。
Vector3 start = new Vector3(one.x, one.y, one.z);
Vector3 end = new Vector3(two.x, two.y, two.z);
float distance = start.dst(end);
Model lineModel = build.createArrow(one.x, one.y, one.z, two.x, two.y, two.z, CAP_LENGTH_CONSTANT / distance, STEM_THICKNESS_CONSTANT / distance, 5, GL20.GL_TRIANGLES, new Material(), VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
您可能需要测试一些数字才能找到正确的常数