我试图以均匀的间隔获取沿线(线段)的点的x和y坐标。在我的测试案例中,它每16个像素,但想法是在ActionScript-3中以编程方式进行。Math - 获取沿线的间隔的x和y坐标
我知道如何两点的直线的y轴截距之间,并且获得斜率的 + B = C ,我不能回忆/想出如何使用斜率或角度得到a和b(x和y)给定c。
没有人知道一个数学公式找出a和b给出的C,Y-截距和斜率(或角度)? (AS3也很好。)
我试图以均匀的间隔获取沿线(线段)的点的x和y坐标。在我的测试案例中,它每16个像素,但想法是在ActionScript-3中以编程方式进行。Math - 获取沿线的间隔的x和y坐标
我知道如何两点的直线的y轴截距之间,并且获得斜率的 + B = C ,我不能回忆/想出如何使用斜率或角度得到a和b(x和y)给定c。
没有人知道一个数学公式找出a和b给出的C,Y-截距和斜率(或角度)? (AS3也很好。)
内置到Flash Point类有一套完美的方法来完成你想要的。使用两个点定义线条,并且可以使用“插值”方法自动获取线下方的点,而不使用任何三角函数。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Point.html#interpolate()
这大大简化了事情,谢谢! – 2012-02-06 17:54:41
尽管这解决了我的问题,但我很好奇'flash.geom.Point.interpolate'方法的作用。 – 2012-02-06 21:40:18
可能是一堆优化的trig数学,只是在较低的水平。 – 2012-02-06 21:54:31
斜率是dy/dx。或者以你的条款A/B。
因此,您可以在Y坐标中添加A,在X坐标中添加B。您可以缩放A和B以使步骤变大或变小。
计算斜率并获得A和B
拿就行了(X1,Y1),两个点(X2,Y2)
A= (Y2-Y1)
B= (X2-X1)
如果你计算这个有两点要通过的要采取
STEPS=10
yStep= A/STEPS
xStep= B/STEPS
for (i=0;i<STEPS;i++)
{
xCur=x1+xStep*i;
yCur=y1+yStep*i;
}
我认为问题是a和b,因为它们现在是未知量。 – templatetypedef 2012-02-06 04:42:52
给出的等式用于线路为y =斜率* X +截距步骤数A和B之间简单地划分来迭代,可以简单地插在x值并回读ÿ的。
您的问题是计算沿着x轴的步长(x方向上的一个16像素移动产生的变化有多大,在您的包含图中是b)。假设你知道一个^ 2 + b^2 = 16(根据定义)和斜率= a/b,你可以计算:
slope = a/b => a = b * slope [乘双方b]
一个^ 2 + b^2 = 16 =>(b *斜率)^ 2 + b^2 = 16 [通过取代来自前一步骤]
我留给你解决b。你有B可以通过计算(X,Y)值后:
for x = 0; x += b
y = slope * x + intercept
echo (x,y)
loop
让s
是斜率。
我们有:1)s^2 = a^2/b^2 ==> a^2 = s^2 * b^2
和:2)a^2 + b^2 = c^2 = 16*16
替代a^2
在2)与1):
b = 16/sqrt(s^2+1)
和
a = sqrt((s^2 * 256)/(s^2 + 1)) = 16*abs(s)/sqrt(s^2+1)
在上面,我假设你想得到的长度和b
。实际上,您的s
是一个有符号值,因此a
可能是负值。因此,一个增量值真的会:
a = 16s/sqrt(s^2+1)
你有一个三角形:
|\ a^2 + b^2 = c^2 = 16^2 = 256
| \
| \ c a = sqrt(256 - b^2)
a | \ b = sqrt(256 - a^2)
| \
|__________\
b
你也知道(m
是斜率):
a/b = m
a = m*b
从原来的三角形:
m*b = a = sqrt(256 - b^2)
m^2 * b^2 = 256 - b^2
此外,由于m = c
,你可以说:
m^2 * b^2 = m^2 - b^2
(m^2 + 1) * b^2 = m^2
因此:
b = m/sqrt(m^2 + 1)
我很懒,所以你可以找到自己a
:a = sqrt(m^2 - b^2)
您的图形精确地描述了该怎么办呢...... – 2012-02-06 04:43:37
找到什么我正在寻找... http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm文章 – 2012-02-06 07:21:25