Рисование линии в многоугольнике - Форум по математике
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум по математике » Решение задач » Решение задач по геометрии » Рисование линии в многоугольнике
Рисование линии в многоугольнике
MpjokeДата: Понедельник, 19.11.2012, 18:39 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
Дано ширина, высота многоугольника, х,у точки, через которую проходит линия, Тангенс угла наклона.

Требуется - построить любую линию, проходящую через заданную точку с заданным углом наклона...
Казалось бы, что все просто....
У меня почему то нормаольно стоит только нд основной диагональю, а все, что под - начинает безбожно врать...(

В чем ошибка и недоработка, делаю так
float k = Math::Tan(angle*(Math::PI / 180)); //вычисляю тангенс угла
int b = yDat - k * xDat; //count B b=y-k*x = вычисляю коэф и из уравнения y = kx+и

if (x==0){
y = b;
if (y<0){ // under the map
y = 0;
x = -b/k;
}else if (y>h){ //upper the map
y=h;
x=-b/k;
}
}else if (x==w){ //if cross xMax
y = k*x +b;
if (y>h){ //upper the map
y=h;
x=b/k;
}else if (y<0){ // under the map
y = 0;
x = -b/k;
}
}else if (0<x<w){
y = k*x +b;
}
PointF xTsyTs = PointF(x,y); - точка на границе прямоугольника с одной стороны.

Затем мкеняем Тангенс, прибавляя 180 и считаем точку на другой стороне прямоугольника. Соединяем точки, но не получаем искомую линию, если ниже диагонали....((
 
MpjokeДата: Вторник, 20.11.2012, 18:58 | Сообщение # 2
Новичок
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
Во вложении - на фотке я попытался нарисовать условие задачи.
Знаем ширину, высоту окна Координаты точки на линии и угловой коэффициент. Надо найти 2 точки пересечения этой линии с краями плоскости.....

Я попробовал сосчитать, используя формулы - итоговую...
Кк я понимаю найти можно следующим образом формулу по которой считать в дальнейшем
a/sin(alf)=b/sin(bet) значит
a' = b*еп(alf)
b' = a * tg(bet)
где a и b - длины соответствующих сторон вспомогательных треугольников
Значит полная формула

aa = x + y*tg(alf)
и
bb=y+x*tg(bet)

Но, если этим пользоваться, то находим только пересечения на осях....
Значит, если противоположные стороны прямоугольника, то сдвигаем оси, а потом считаем???
Прикрепления: 9741440.png(18Kb)
 
Форум по математике » Решение задач » Решение задач по геометрии » Рисование линии в многоугольнике
Страница 1 из 11
Поиск: