QPainter: Рисование части линии, ограниченной окружностью |
Здравствуйте, гость ( Вход | Регистрация )
QPainter: Рисование части линии, ограниченной окружностью |
Snake174 |
15.3.2012, 6:14
Сообщение
#1
|
Студент Группа: Участник Сообщений: 89 Регистрация: 18.4.2011 Из: Миасс Пользователь №: 2613 Спасибо сказали: 9 раз(а) Репутация: 0 |
Всем привет. Есть такой код:
Он рисует окружность и зелёную линию от центра до указателя мыши. Нужно чтобы рисовалась часть линии, выделенная красным цветом. В какую сторону копать? Image |
|
|
Алексей1153 |
15.3.2012, 6:24
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
уравнение окружности с центром в (x0,y0) и с радиусом r:
(x-x0)2+(y-y0)2=r2 уравнение линии, проходящей через точки (x1,y1) и (x2,y2) (x-x1)/(x2-x1)=(y-y1)/(y2-y1) нарисовать на бумаге, найти пересечения, вывести формулу, соединить красной линией Сообщение отредактировал Алексей1153 - 15.3.2012, 6:25 |
|
|
Snake174 |
15.3.2012, 6:27
Сообщение
#3
|
Студент Группа: Участник Сообщений: 89 Регистрация: 18.4.2011 Из: Миасс Пользователь №: 2613 Спасибо сказали: 9 раз(а) Репутация: 0 |
Спасибо, сейчас попробую.
|
|
|
Snake174 |
15.3.2012, 8:52
Сообщение
#4
|
Студент Группа: Участник Сообщений: 89 Регистрация: 18.4.2011 Из: Миасс Пользователь №: 2613 Спасибо сказали: 9 раз(а) Репутация: 0 |
В общем решил так:
|
|
|
Алексей1153 |
15.3.2012, 9:37
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Snake174, а что за магические цифры 80 и 90 ? )
|
|
|
Snake174 |
15.3.2012, 10:55
Сообщение
#6
|
Студент Группа: Участник Сообщений: 89 Регистрация: 18.4.2011 Из: Миасс Пользователь №: 2613 Спасибо сказали: 9 раз(а) Репутация: 0 |
Snake174, а что за магические цифры 80 и 90 ? ) QPoint( width() / 2, height() / 2 + 90 ) - центр окружности 90 - радиус 80 - радиус другой окружности. Нашёл пересечение прямой с окружностью радиусом 80 - это первая точка, от которой будет строиться линия Нашёл пересечение прямой с окружностью радиусом 90 - это вторая точка, до которой будет строиться линия Вот и получилась линия длиной 10 |
|
|
Алексей1153 |
16.3.2012, 8:18
Сообщение
#7
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
делай именованные константы-это правильнее, удобнее и читабельнее
|
|
|
Текстовая версия | Сейчас: 26.11.2024, 23:13 |