您好我需要从3个不同的变量创建三元图表。
http://en.wikipedia.org/wiki/Ternary_plot
我基本上需要从三个变量的比例中得出三角形内点的x / y坐标。
是否有人使用任何功能/算法来创建它?顺便说一句,我使用的语言是ActionScript 3
由于
答案 0 :(得分:2)
维基百科说三元图是:
三个变量的重心图 总和为常数
重心图采用三个变量,总和为1,作为参数。所以首先要把你的三个输入除以它们的总和。
现在您有三个总和为1的数字,您可以绘制一个重心点。要做到这一点,只需将三角形中一个点的位置乘以第一个数字,将三角形上的第二个点乘以第二个数字,将第三个数字乘以第三个数字。然后总结所有,这是你应该在图上绘制的位置。
public Vector2 CalculateCoordinate(float a, float b, float c)
{
float sum = a + b + c;
a /= sum;
b /= sum;
c /= sum;
return Triangle.Corner1Position * a
+ Triangle.Corner2Position * b
+ Triangle.Corner3Position * c;
}
答案 1 :(得分:2)
Martin提供了正确的解决方案。在AS3中,您可能希望使用flash.geom.Point
类。
public function calculateCoordinate(a:Number, b:Number, c:Number):Point {
var sum:Number = a + b + c;
a /= sum;
b /= sum;
c /= sum;
return scale(Triangle.Corner1Position, a)
+ scale(Triangle.Corner2Position, b)
+ scale(Triangle.Corner3Position, c);
}
public function scale(p:Point, factor:Number):Point {
return new Point(p.x * factor, p.y * factor);
}