Недавно добавленные исходники

•  3D Designer  67

•  Sik Screen Capture  50

•  Patch Maker  52

•  Айболит (remote control)  61

•  ListBox Drag & Drop  49

•  Доска для игры Реверси  636

•  Графические эффекты  61

•  Рисование по маске  43

•  Перетаскивание изображений  49

•  Canvas Drawing  48

•  Рисование Луны  129

•  Поворот изображения  37

•  Рисование стержней  33

•  Paint on Shape  31

•  Генератор кроссвордов  42

•  Головоломка Paletto  43

•  Теорема Монжа об окружностях  78

•  Пазл Numbrix  39

•  Заборы и коммивояжеры  59

•  Игра HIP  43

 

 

Архив исходников

   
  Базы данных
  Графика & Мультимедиа
  Сети & Интернет
  Система
  Разное
   

Ссылки и Баннеры ...

 

Delphi Sources

Delphi Sources

 


 

ИСХОДНИК ПРОГРАММЫ

 

. : Теорема Монжа об окружностях : .

 

Delphi - Если 3 пары общих внешних касательных к 3 окружностям существуют и пересекаются, то точки пересечения коллинеарны

Исходник программы, показывающей пример решения теоремы Монжа: если 3 пары общих внешних касательных к 3-м окружностям существуют и пересекаются, то точки пересечения коллинеарны (лежат на одной прямой).

Для существующих касательных линий ни одна окружность не может целиком содержаться внутри другой. Для пересечения трех пар касательных линий, соединяющих окружность, никакие 2 окружности не могут иметь одинаковый радиус.

Программа определяет 3 случайных окружности, которые удовлетворяют вышеуказанным условиям (уникальные размеры и не полностью перекрываются), а также удовлетворяют дополнительному требованию, чтобы пересечения происходили в видимой области изображения. Вы можете использовать клики мыши по окружностям и перетаскивание, чтобы менять их размеры. Касательные линии отображаются автоматически по мере изменения окружностей.

Нажатие левой кнопки мыши на центр круга или рядом с ним запускает операцию перемещения. Нажатие возле края круга и внутри круга запускает операцию изменения размера. Каждая операция перемещения мыши с нажатой левой кнопкой рисует все существующие окружности и касательные, а также линию, соединяющую точки пересечения, если они существуют.

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

Заметки к исходнику

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

Использование данных процедур рисования касательных к окружностям является основным проблемным местом при рисовании изображения. Было решено использовать TPaintbox как элемент управления для повышения эффективности рисования. Процедура Paint перерисовывает фигуру каждый раз при ее вызове. Установка свойства двойной буферизации формы устраняет мерцание при перерисовке фигур.

Фигуры

  • Окружности (Круги: массив [1..3] TCircle;)
  • Касательные линии, Касательные; массив [1..6] TLine;
  • Линия, соединяющая точки пересечения каждой из 3 пар касательных, фактически проведенная как две линии, MongeLine1 и MongeLine2, от каждой из двух наиболее удаленных точек пересечения до третьей точки.

Кнопка «Создать случайные окружности» создает случайный допустимый набор фигур с касательными, пересекающимися в границах рамки для рисования.

Просмотры: 78
Дата: 12.07.2021, Автор: Gary Darby
Написать сообщение:
 

 

Скачать (15 Кб)   ↓ 1   Регистрация >>

 

© 2004-2021 "DS"

Соглашение пользователя / Реклама / Карта сайта             Created by BrokenByte Software


ВКонтакте   Facebook   Twitter