Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть две точки соединённые линией. Как протянуть круг с точки до точки? 
:(
    Опции темы
Kaban4eG
Дата 10.2.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



У меня есть две точки с координатами соединённые линией, на самих точках я построил круг, но мне нужно чтоб он по всей линии строился)))

Извините если что за язык, я с України.
PM MAIL   Вверх
Snowy
Дата 10.2.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Вопрос не совсем понятен.
Но думаю, что нужно вот это:
Код

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    x1, y1: Integer; // координаты первой точки
    x2, y2: Integer; // координаты второй точки
    cx, cy, r:   integer; // координаты центра круга и радиус
  end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  x1 := Random(Width); // Случайно задаём координаты двух точек
  y1 := Random(Height);
  x2 := Random(Width);
  y2 := Random(Height);
  cx := (x1 + x2) div 2; // Вычисляем координаты центра круга
  cy := (y1 + y2) div 2;
  r := Round(Sqrt(Sqr(x2 - x1) + Sqr(y2 - y1))) div 2; // вычисляем радиус круга
end;

procedure TForm1.FormPaint(Sender: TObject);
begin // рисуем нашу картинку на форме
  Canvas.Ellipse(cx - r, cy - r, cx + r, cy + r); // круг 
  Canvas.MoveTo(x1, y1); // соединяющая линия
  Canvas.LineTo(x2,y2);
  Canvas.Ellipse(x1-2, y1-2, x1+2, y1+2); // точки
  Canvas.Ellipse(x2-2, y2-2, x2+2, y2+2);
  Canvas.Ellipse(cx-2, cy-2, cx+2, cy+2);
end;

PM MAIL   Вверх
Kaban4eG
Дата 11.2.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



user posted image

PM MAIL   Вверх
Kaban4eG
Дата 11.2.2009, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



Как здесь картинку загрузить? сообщение сверху не удачная попытка.
Мне не так нужно. Ты сделал 1 круг на всю длину, а мне нужно построить круг в первой точки с любым радиусам и протянуть єво до второй точки (круг должен строится во всех пикселях линии). И выйдет такой прямоугольник с выдутыми краями.

PM MAIL   Вверх
Qu1nt
Дата 11.2.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 2
Всего: 50



А зачем так? Не проще соединить два круга линиями?
PM MAIL   Вверх
Kaban4eG
Дата 11.2.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



У меня задание: "Построение эквидистанты вокруг заданного многоугольника".
Я уже всё сделал, осталось кругом зарисовать)))  Мне нужно чтобы зарисовано было))) 
PM MAIL   Вверх
Snowy
Дата 11.2.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Правильно поставленая задача - наполовину решённая.
А в твоей только набор слов и никакой постановки задачи.
Ну и как тебя понимать?

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


Цитата(Kaban4eG @  11.2.2009,  00:38 Найти цитируемый пост)
нужно построить круг в первой точки с любым радиусам и протянуть єво до второй точки
Круг невозможно тянуть - он круглый.


Цитата(Kaban4eG @  11.2.2009,  00:38 Найти цитируемый пост)
(круг должен строится во всех пикселях линии). И выйдет такой прямоугольник с выдутыми краями.
Тут уже немного яснее.
То есть в каждой точке отрезка, тебе нужно построить окружность фиксированного радиуса.


Цитата(Kaban4eG @  11.2.2009,  12:30 Найти цитируемый пост)
"Построение эквидистанты вокруг заданного многоугольника".
Ну и где здесь многоугольник? Если строить эквидистанту от прямой, то круг тут совсем не нужен, а как заметил Qu1nt, строятся 2 параллельные линии, соединённые по краям полукругом.
Но это в случае прямой. В случае многоугольника всё намного сложнее.
PM MAIL   Вверх
Kaban4eG
Дата 11.2.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



Цитата

(круг должен строится во всех пикселях линии). И выйдет такой прямоугольник с выдутыми краями.
Тут уже немного яснее.
То есть в каждой точке отрезка, тебе нужно построить окружность фиксированного радиуса. 


Вот єто мне и нужно. А так как сказал Qu1nt нужно много дописывать и сложнее. Я вечером выкину прогу, щас ухожу на практику. Мне просто тяжело объяснить на русском. Большое спасибо что хотите понять и помогаете)))  smile  
PM MAIL   Вверх
Snowy
Дата 11.2.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Это будет совсем не эквидистанта.
Таким способом ты нарисуешь цилиндр, а не то, что хочешь.
Чтобы нарисовать эквидистанту к прямой, нужно делать именно, как я писал:
Цитата(Snowy @  11.2.2009,  12:58 Найти цитируемый пост)
строятся 2 параллельные линии, соединённые по краям полукругом.

PM MAIL   Вверх
Kaban4eG
Дата 12.2.2009, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



Здесь программа для построения многоугольника. Так  как Ты, Snowy, предлогаеш, я сделать не смог. Будем надеяться что у тебя выйдет)))

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Grafica.rar 173,70 Kb
PM MAIL   Вверх
AntonN
Дата 12.2.2009, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



если нужно именно по картинке, можно напролом, но это некрасиво smile
Код

procedure TForm1.Button1Click(Sender: TObject);
  function get_long(x1,y1,x2,y2:double):double;
  begin
    result:=sqrt(sqr(abs(x1-x2)) + sqr(abs(y1-y2)));
  end;
var p1,p2:tpoint; r,i,l:integer; dx,dy:double;
begin
 p1.X:=100;
 p1.Y:=100;
 p2.X:=350;
 p2.Y:=200;
 r:=24;

 canvas.Brush.Style:=bssolid;
 canvas.Brush.Color:=clblack;
 l:=trunc(get_long(p1.X,p1.Y,p2.X,p2.Y));
 dx:=(p2.X-p1.X)/l;
 dy:=(p2.y-p1.y)/l;
 for i:=0 to l do begin
  canvas.Ellipse( p1.X+round(dx*i)-r,p1.y+round(dy*i)-r,p1.X+round(dx*i)+r,p1.y+round(dy*i)+r );
 end;
end;



--------------------
user posted image
PM MAIL WWW   Вверх
Kaban4eG
Дата 12.2.2009, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



 smile  smile  smile 
Большое спасибо, єто то что надо, и нормально смотрится)))
 smile  smile  smile 
PM MAIL   Вверх
Kaban4eG
  Дата 15.2.2009, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



Одна проблемка есть, у меня по циклу рисует, строит нормально, тока последняя линия не замыкает многоугольник, ее в центр тянет почему то. 
Вот программа, посмотрите пожалуйста, я там заблокировал кусок, он рабочий, просто чтоб видеть как в центр сворачивает.

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  Grafica.rar 175,55 Kb
PM MAIL   Вверх
AntonN
Дата 16.2.2009, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



Kaban4eG, выложи готовый скриншот, а то не понять.


--------------------
user posted image
PM MAIL WWW   Вверх
Kaban4eG
Дата 16.2.2009, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



user posted image

я строил квадрат а мне .....
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.