Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Ромб в граф режиме


Автор: 4ipalino 24.3.2008, 21:02
Доброе время суток...
Подскажите пожалуйста,как сделать так чтобы ромб двигался по периметру трехугольника
и как нарисовать этот робм)

Автор: profispb 24.3.2008, 23:10
И опять математика, я понять не могу... вы что хотите программировать не зная элементарной математики? НЕ выйдет!
Эту задачку в третьем классе дети решают....)) Исходные данные площадь треугольник, площадь ромба и крути с ними как хошь)))

Автор: Alix 25.3.2008, 09:46
Ну ладно... вот матека. Тут все, правда, зависит от того, как задан треугольник. Я буду считать, что он задан координатами своих вершин: (x1, y1), (x2, y2), (x3, y3). Все что нужно - построить функцию вида y[x] для перемещения по отрезкам между вершинами. 
Как известно, прямую между двумя точками можно задать так:
(y - y1) / (y2 - y1) = (x - x1) / (x2 - x1).
Значит фукнцию y[x] можно записать как-то так:
Код
function y(from, dest : TPoint; x : integer) : integer;
begin
  y := round( (x - from.x) * (dest.y - from.y) / (dest.x - from.x) + from.y);
end;

Самое главное тут учитывать, что y[x2] не факт что будет равно y2, т.к. возможны погрешности. С другой строны здесь же round, а не trunc какой-нибудь...
Таким образом легко, идя от вершины к вершине и потом назад к первой, пройти по сторонам треугольника. Вершины могут быть заданы массивом 0..2. И двигаться будем между current и (current + 1) mod 3. 
Осталось нарисовать ромб. Думаю он может быть задан своими... эээ.... я забыл как их зовут, диагонали? В общем тут даже пояснять не буду - центр ромба есть, а найти его вершины легко. Если, конечно, его диагонали не должны быть наклонены так же как и текущее ребро треугольника. Будем надеяться что такой изврат не нужен.

Добавлено через 1 минуту и 47 секунд
profispb, твой ход  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)