Помогите создать алгоритм для построения графика тройной / треугольной диаграммы - PullRequest
1 голос
/ 14 октября 2010

Привет! Мне нужно создать график троичного графика из 3 разных переменных.

http://en.wikipedia.org/wiki/Ternary_plot

Мне нужно найти координаты x / y точки в треугольнике из отношения трех переменных.

Есть ли какая-либо функция / алгоритм, который кто-либо использует для создания этого? Кстати, я использую ActionScript 3

Спасибо

Ответы [ 2 ]

2 голосов
/ 14 октября 2010

Мартин предоставил правильное решение.В 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);
}
2 голосов
/ 14 октября 2010

Википедия говорит, что троичный график - это:

барицентрический график с тремя переменными, которые составляют постоянную

Барицентрический график принимает три переменные, которые суммируются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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...