Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2014, 13:53   #11
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Как определить середину и по ней провести вторую диагональ под углом 90 градусов?
Эх, мля, тряхну стариной, потеребонькаю!



Так, прикинул на глаз, вроде прально всё... Но программно не проверял.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.09.2014, 14:20   #12
SeregaVili
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 45
По умолчанию

Кто нибудь знает, как из середины диагонали провести такую же диагональ, под прямым углом? Середина определяется по формуле. А вот прямой угол как задать не знаю? Или может просто как то инвертировать координаты первой диагонали?
SeregaVili вне форума Ответить с цитированием
Старый 29.09.2014, 14:34   #13
SeregaVili
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 45
По умолчанию

min@y™ спасибо чувак, огромное)) эт то что нужно))
SeregaVili вне форума Ответить с цитированием
Старый 29.09.2014, 14:37   #14
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
спасибо чувак, огромное)) эт то что нужно))
И тебе спасибо за развлекуху. А то на работе скука смертная, как зимой на болоте.
Обращайся, если чо.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.09.2014, 14:43   #15
SeregaVili
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 45
По умолчанию

min@y™ Окей Тема, кстати, получается закрыта.
SeregaVili вне форума Ответить с цитированием
Старый 29.09.2014, 18:38   #16
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,609
По умолчанию

Код:
// пусть задана диагональ квадрата с началом в точке (f1x, f1y) и концом в точке (f2x, f2y). Нужно построить вторую диагональ квадрата и квадрат.

case WM_PAINT:
hdc = GetDC(hwnd);

//отрисовка диагонали
MoveToEx(hdc, f1x, f1y, NULL); LineTo(hdc, f2x, f2y);

// поиск центра диагонали - точки (fcx, fcy)
fcx = (f1x + f2x) / 2;
fcy = (f1y + f2y) / 2;

//
fex = f2x - f1x;
fey = f2y - f1y;

// длина вектора диагонали (f1x,f1y)(f2x,f2y)
fhx = sqrt( fex*fex + fey*fey);

fjy = fcy + sqrt( (fhx*fhx*fex*fex) / (fex*fex + fey*fey) );
fjx = fcx - ( (fey*(fjy-fcy))/fex);

// координаты одной из точек диагонали
fkx = (fjx+fcx) / 2;
fky = (fjy + fcy) / 2;

// отрисовка первой половины второй диагонали
MoveToEx(hdc, fcx, fcy, NULL); LineTo(hdc,fkx,fky);

flx = fcy - sqrt( (fhx*fhx*fex*fex) / (fex*fex + fey*fey) );
fly = fcx + ( (fey*(fjy-fcy))/fex);

// координаты одной из точек диагонали
fmx = (fly+fcx) / 2;
fmy = (flx + fcy) / 2;

// отрисовка второй половины второй диагонали
MoveToEx(hdc, fcx, fcy, NULL); LineTo(hdc,fmx,fmy);


// отрисовка сторон квадрата
MoveToEx(hdc, f1x, f1y, NULL); LineTo(hdc,fkx,fky);
MoveToEx(hdc, f1x, f1y, NULL); LineTo(hdc,fmx,fmx);

MoveToEx(hdc, f2x, f2y, NULL); LineTo(hdc,fkx,fky);
MoveToEx(hdc, f2x, f2y, NULL); LineTo(hdc,fmx,fmx);

ReleaseDC(hand, hdc);
return 0;
Так вроде работает
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"

Последний раз редактировалось challengerr; 29.09.2014 в 20:33. Причина: ошибка
challengerr вне форума Ответить с цитированием
Старый 01.10.2014, 13:31   #17
SeregaVili
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 45
По умолчанию

challengerr, тоже спасибо)) по подсказке Миная почти все сделал, но с серединой диагонали происходили странные вещи. По твоей подсказке середина диагонали стала находиться правильно) А дальше уже все работает)
SeregaVili вне форума Ответить с цитированием
Старый 01.10.2014, 13:40   #18
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

А нахрена тебе знать середину диагонали, если я её через формулы вывел.
Надо было просто подставить выражения из 1-й выделенной формулы в конечный результат (последнее выделенное выражение) и всё.
Знак только в выражении ординаты поменять, т.к. в экране компа она имеет направление сверху вниз.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 01.10.2014, 13:51   #19
SeregaVili
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 45
По умолчанию

Первая формула, у тебя выделенная находит середину диагонали. Но она неправильная, по крайней мере, так получается У challengerra координата середины вычисляется по формуле: (x1+x2)/2 и, соответственно y так же. А вот последние выделенные формулы, они действительно отлично работают. Я подставил вычисление координат середины challengrra в твою последнюю формулу и все заработало. Может быть ты неправильно первую формулу вывел?))
SeregaVili вне форума Ответить с цитированием
Старый 01.10.2014, 13:54   #20
SeregaVili
Пользователь
 
Регистрация: 07.01.2013
Сообщений: 45
По умолчанию

Вот как то так отрисовывает)
SeregaVili вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование квадрата KocT9 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 22.10.2014 11:58
OpenGL. Рисование квадрата kuy Общие вопросы C/C++ 0 12.03.2013 23:46
Рисование ровного квадрата/круга при нажатой клавише Ctrl DeeDe Помощь студентам 0 07.05.2012 14:28
Рисование квадрата. Работа на Canvas Файзулка Мультимедиа в Delphi 8 26.02.2010 14:34
Рисование квадрата, работа на canvas lubov_morkov Помощь студентам 2 02.06.2009 13:01