Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кто может помочь!! 
:(
    Опции темы
Yanis
Дата 24.5.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Поиском пользоваться умеешь? 
Код
{ **** UBPFD *********** by kladovka.net.ru ****
>> Проверка попадания точки в треугольник

Проверяет попадает ли точка P в треугольник ABC.
Вершины должны быть перечислены против часовой стрелки.

Зависимости: нет
Автор:       Fenik, [email protected], Новоуральск
Copyright:   Николай Федоровских
Дата:        8 октября 2004 г.
********************************************** }

function PtInTriang(const P, A, B, C: TPoint): Boolean;
{Внимание!! Вершины должны быть заданы против часовой стрелки!
        A
       / \
      / \
     B----C }
begin
  Result := False;
  if (P.x-A.x)*(A.y-B.y) - (P.y-A.y)*(A.x-B.x) >= 0 then
  if (P.x-B.x)*(B.y-C.y) - (P.y-B.y)*(B.x-C.x) >= 0 then
  if (P.x-C.x)*(C.y-A.y) - (P.y-C.y)*(C.x-A.x) >= 0 then
    Result := True;
end;
  

Это сообщение отредактировал(а) Yanis - 24.5.2006, 13:50


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
skyboy
Дата 24.5.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



можно воспользоваться Windows API функцией:
Цитата

The PtInRegion function determines whether the specified point is inside the specified region. 
BOOL PtInRegion(
    HRGN hrgn,    // handle of region 
    int X,    // x-coordinate of point  
    int Y  // y-coordinate of point  
   );    

Parameters
hrgn
Identifies the region to be examined. 
X
Specifies the x-coordinate of the point. 
Y
Specifies the y-coordinate of the point. 

Return Values
If the specified point is in the region, the return value is nonzero.
If the specified point is not in the region, the return value is zero. 
 
PM MAIL   Вверх
masterdelphi
Дата 24.5.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Очень важный вопрос:
У меня есть n-угольник нарисованный в image, для каждого пикселя n-угольника надо расчитать интенсивность освещения и выполнить закраску по алгоритму Гуро(если кто знает).n-угольник задается матрицей nx4.Где первые три столбца это x,y,z четвертый-нормировочный.
формулу для интенсивности я знаю в неё входят три переменных зависящих от координат конкретного пикселя.
Вопрос: как пробежаться по всем пикселям n-угольника вычислив для каждого пикселя и задав ему свою интенсивность ну скажем в макросе RGB(0,I,0), где I интенсивность конкретного пикселя

Добавлено @ 17:42 
?
 
PM MAIL   Вверх
masterdelphi
Дата 24.5.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вообщем-то весь вопрос заключается в том чтобы взяв какой-то многоугольник поочерёдно вынимать из него координаты пикселей ему принадлежащих, проводить с ними математические операции, и присваивать пикселю с этими координатами определенное значение в макросе RGB(0,I,0)!!!!!!!! 
PM MAIL   Вверх
masterdelphi
Дата 25.5.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Поясню: алгоритм освещения надо проходить его в определенном порядке(алгоритм Гуро-интерполяция интенсивностей):
координаты освещаемого в данный момент пикселя это не координаты на самом Image т.е. я хочу сказать что у меня есть n-угольник в трёхмерном пространстве, для каждого пикселя(в смысле точки) этого многоугольника надо расчитать интенсивность используя его реальные координаты,далее это массив интенсивностей надо сохранить , выполнить операцию проецирования на Image и присвоить ранее расчитанные интенсивности уже спроецированным пикселям.
 
PM MAIL   Вверх
sergejzr
Дата 26.5.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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





--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




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


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

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