IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Поворот призмы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Светлана

Репутация: -  0  +


Нужно написать такую программу в Делфи:
"Дана призма, например, четырёхугольная. С клавиатуры вводится число, на которое её верхнее основание должно повернуться в своей плоскости. При этом нижнее основание остаётся на месте, а боковые рёбра превращаются в спирали".
Как сделать, чтобы отрезки изгибались в соответствии с заданным числом? И как получить поворот параллелограмма?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
И как получить поворот параллелограмма?
Это как раз - самое простое: поворот точек (по отдельности), образующих этот параллелограмм, на заданный угол вокруг оси вращения, а потом - соединить точки линиями... Сложнее будет с преобразованием прямых в спирали ... Почему спираль?

Попробуй нарисовать (вручную), какую именно линию ты хочешь получить при повороте верхнего основания...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(volvo @ 12.06.2007 0:49) *

Почему спираль?
Я попробую ответить на этот вопрос, как я это понимаю.
Видимо, нужно изобразить кривые, которые описали бы вершины, скажем, верхнего основания, если верхнее основание опускать вниз, при этом постепенно поворачивая, так, что достигнув уровня нижнего основания, оно совпадет с повернутым на заданный угол нижним основанием. Уфф.. smile.gif
В таком случае эти кривые действительно представят собой спирали, и единственный корректный способ нарисовать их - по точкам. То есть надо смоделировать процесс, который я описал выше, провести его с некоторым шагом по времени и соединить точки последовательных положений вершин.

Но меня смущает еще другое.. В условии речь идет о "призме, например, четырехугольной" - а потом вдруг резко появляется параллелограмм, хотя это не единственно возможный четырехугольник. Но, с другой стороны, если это не параллелограмм, а четырехугольник общего вида, то возникает неопределенность относительно центра вращения (на тот самый заданный угол). В случае параллелограмма этот вопрос не возникает, ввиду его симметрии - все полагают, в качестве ЦВ берется пересечение диагоналей, хотя это тоже нигде не сказано..
Кошка, ответишь?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Светлана

Репутация: -  0  +


Думаю, будет достаточно частного случая четырёхугольника. А за ось вращения взять пересечение диагоналей.

Сообщение отредактировано: Кошка -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






То есть, ты хочешь получить нечто вроде:

Прикрепленное изображение(поворот на 90 градусов)

Прикрепленное изображение(на 180)

?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Светлана

Репутация: -  0  +


yes2.gif Да, именно это и нужно.
При нажатии одной кнопки у меня рисуется призма. Допустим, при нажатии другой она поворачивается. А как мне стереть исходную призму, чтобы преобразованная рисовалась не на ней?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Это - смотря на чем ты рисуешь... Если на PaintBox-е, то можно просто очищать его полностью:

...
With PaintBox1.Canvas Do Begin
Brush.Style := bsSolid;
Brush.Color := clBtnFace;
FillRect(PaintBox2.ClientRect);
End;
...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.11.2020 10:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name