我正在开发一款基于触控的游戏,而且我在绘制用户触及的路径方面遇到了问题。 我试图模仿这些应用http://www.youtube.com/watch?v=G3CECr6mT1Q或http://www.youtube.com/watch?v=r34-_0wrVC4
之类的内容我在XNA / C#中这样做。
我的问题是:我有一组定义用户触摸路径的路标。我不确定如何在所有这些点之间得到一条风格化的线,所以我想“嘿,我将只有一个非常小的图像'线',并在航点之间的每个点绘制它,并相应地旋转它如果这是最佳解决方案,我不确定。
但我被卡住了,因为我不知道如何获得这两点之间的所有坐标。我有两点,我可以得到从第一个到第二个的矢量等,但我似乎无法得到正确的数学。
有任何建议或帮助吗? 谢谢!
答案 0 :(得分:5)
要计算两点之间的中间点,找到从一个点到另一个点的方向向量以及点之间的距离。将距离缩放0到1之间的因子t,其中t = 0对应于第一点t = 0.5是它们之间的中间,t = 1对应于第二点。然后按此值缩放方向向量并将其添加到原始点。
Vector2 IntermediatePoint(Vector2 p0, Vector2 p1, float t)
{
Vector2 delta = p1 - p0;
float distance = delta.Length();
if (distance == 0.0f)
{
return p0;
}
else
{
Vector2 direction = delta / distance;
return p0 + direction * (distance * t);
}
}
如果计算p0和p1之间的多个点,则只应计算一次距离和方向。
您还可以考虑使用XNA RoundLine来连接您的积分。
答案 1 :(得分:1)
pointA = waypointsToDraw.ElementAt(i);
pointB = waypointsToDraw.ElementAt(i + 1);
deltaVector = pointB - pointA;
distance = deltaVector.Length();
direction = deltaVector / distance;
for (int z = 1; z < distance; z++)
{
newPoint = pointA + direction * (distance * (z/distance));
//this is the newPoint - it will be every point/pixel between pointA and pointB. Put drawing code here
}
上面的代码示例。 PointS和B点是两个端点,newPoint将是它们之间的每一个点
答案 2 :(得分:0)
查看http://create.msdn.com/en-US/education/catalog/sample/primitives处的样本,了解如何绘制包含直线的简单“基元”的详细信息。