imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 27.10.2004, 11:32     # 1
akaripov
Guest
 
Сообщения: n/a

Unhappy ПОМОГИТЕ СДЕЛАТЬ ПРОГРАММУ,PLEASE


Задача:
Изобразить движущуюся прямую,которая в каждый момент времени касается окружности,центр которой совпадает с центром экрана.Точка касания пересекается по окружности с постоянной угловой скоростью. Сама окружность невидима.Радиус окружности вводит с клавиатуры пользователь.
На Borland C++
 
Старый 27.10.2004, 12:19     # 2
PLP
Junior Member
 
Регистрация: 16.07.2002
Сообщения: 113

PLP Путь к славе только начался
Цитата:
akaripov:
движущуюся прямую
один конец прямой на окружности, а второй где?

Цитата:
akaripov:
Точка касания пересекается
должно быть перемещается?

Технически - зная координаты концов прямой, стираем прямую (либо стираем весь экран, либо закрашиваем прямую цветом фона) и рисуем смещенную и т.д.

Сама математика простая: в цикле по углу angle от 0 до 359 с помощью sin и cos вычисляем координаты точки окружности x = R*cos(angle); y = R*sin(angle) и учитываем смещение центра окружности - прибавляем к полученным координатам.
PLP вне форума  
Старый 27.10.2004, 13:35     # 3
zyto
Member
 
Аватар для zyto
 
Регистрация: 24.01.2004
Адрес: Москва
Сообщения: 386

zyto Луч света в тёмном царствеzyto Луч света в тёмном царствеzyto Луч света в тёмном царствеzyto Луч света в тёмном царствеzyto Луч света в тёмном царстве
Цитата:
один конец прямой на окружности, а второй где?
Прямая бесконечна...
zyto вне форума  
Старый 27.10.2004, 16:15     # 4
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
тута все можно еще проще сделать через матрицу поворота и смещения. Прямая строится по двум точкам с двумя координатами. Вот тебе статейка на эту тему:
_ttp://algolist.manual.ru/graphics/3dfaq/articles/23.php
/7y3uK вне форума  
Старый 12.11.2004, 16:07     # 5
HoverHell
Member
 
Аватар для HoverHell
 
Регистрация: 12.11.2004
Сообщения: 205

HoverHell Нимб уже пробиваетсяHoverHell Нимб уже пробивается
Цитата:
/7y3uK:
один конец прямой на окружности, а второй где?
Касательная. Перпендикулярна к отрезку, проведённому из центра окружности к точке касания.точка касания перемещается с течением времени.
Одна точка прямой - точка касания. Вторая - это точка, отведённая от точки касания на какое-нибудь расстояние в сторону, равную текущему углу + 90 градусов.

На паскале я бы написал такую программу за 15 минут. А вот на C++ пишу к сожалению редко.
HoverHell вне форума  
Старый 15.11.2004, 11:18     # 6
SwiMMeR
::VIP::
Отыпный Саводод
 
Аватар для SwiMMeR
 
Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452

SwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собой
На С++ программить не умею посему предложу алгоритм ...

1. Узнаем размеры экрана
2. Вычисляем координаты центра окружности (X0,Y0)
4. Рисуем окружность X^2+Y^2=R^2, т.е.
X в цикле от -R до +R с шагом чем меньше, тем лучше рисуем две точки
с Y=+корню(R^2-X^2) и Y=-корню(R^2-X^2)
5. Затем RR(угол) в цикле от 0 до 360 градусов делаем ...

- Получаем точку с X, полученным из уравнения R^2=X^2+2*R^2*(1-cos RR), и Y, полученным из уравнения X^2+Y^2=R^2

- уравнение касательной в этой точке будет иметь вид
Y=(-A/B)X+(B+A^2/B), где А,В - абсцисса и ордината, полученные на предыдущем этапе (координаты точки касания)

- Рисуем касательную

P.S. На каждом шаге необходдимо корректировать абциссу и ординату на X0 и Y0 соответственно

Истина где-то рядом
__________________
The Information will be FREE!
SwiMMeR вне форума  
Старый 16.11.2004, 22:16     # 7
Arush
Guest
 
Сообщения: n/a

Только не забыть обрезать прямую по краям экрана.
В принципе, если радиус будет больше чем половина диагонали - прямой будет не видно.
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:18.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.