Другие языки программирования и технологии

Pascal. Даны координаты начала и конца отрезка. Определить координаты всех точек этого отрезка.

Например, (0; 0), (100;100).
Находишь уравнение прямой, на которой лежит этот отрезок y=k*x+b
if x1 <> x2 then
begin
k :=(y2-y1)/(x2-x1);
b :=y2-k*x2;
end;
все - уравнение у тебя есть. Берешь х от х1 до х2 с каким тебе надо шагом, подставляешь в уравнение и получаешь у.
Александр Борискин
Александр Борискин
20 328
Лучший ответ
Владислав Хамматов 1) А если это вертикальная линия? То на экране не одной точки не появится и программа вылетит с ошибкой!
2) А если Abs(Y2-Y2) > Abs(X2-X1), то получится не сплошная линия, а пунктирная!
Ну для твоего примера это очень просто: для каждой Х значение Y будет соответственным.
А в общем случае это довольно-таки обширный вопрос.
Т. к. нужно учитывать как конкретный компилятор строит отрезки.
Если хочешь написать свой построитель отрезков, то нужно сответствующую литературу почитать.
К примеру смотри вот здесь:
http://doors.infor.ru/allsrs/alg/paper/2dgraph.html
http://student.km.ru/ref_show_frame.asp?id=30069308FA7C4B0095829FB05C3997B3
Или в поисковике введи волшебное слово:
Брезенхэм
Если кто хорошо учил геометрию и математику вообще, то знает что отрезок имеет бесконечное число точек....
M.
Malov .
2 619
Отрезок имеет бесконечное значение точок.. .
согласен
||
\/
Это же просто как два рубля я.. . напиши линейную функцию, вида: y: = xm, где m линейный коофициент. Ну или каретками разрули. Хотя нет - с дробными неочень коретками.. . Линейный коофициент вычисли так: большу большую разницу координат разбдели на меньшую, на пример в (0; 0), (100; 50) это будет разница по Иксу. Надеюсь, что функцию min-max для определения большего/меньшего числа из массива ты знаешь.. . остается только определить частоту определения точек, если необходимо отсчитывать по длинне отрезка, то тут тебе поможет школьное знание геометрии вообще и теоремы пифагора вчастности, а если по одно из осей - то и не заморачивайся и вуа-ля! Сам код не привожу, а то свсем расслабитесь...

Похожие вопросы