Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
Igor3D
1227 / 594 / 74
Регистрация: 01.10.2012
Сообщений: 2,844
#1

Барицентрические координаты - Алгоритмы

09.11.2014, 11:29. Просмотров 426. Ответов 2
Метки нет (Все метки)

Здравствуйте

Есть треугольник ABC, известны его вершины в пр-ве. Также в каждой вершине записаны значения атрибута, напр цвет. Требуется интерполировать цвет в точке P внутри тр-ка. Это делается так (псевдокод)

C++
1
2
3
4
ARGB GetColor( const Point & A, const Point & B, const Point & C,  float alpha, float beta )
{
 return A.color * (1 - alpha - beta) + B.color * alpha + C.color * beta;
}
Др словами подаются веса вершин, достаточно 2 (alpha и beta), третий вес дополняет до 1

Но вот исходный то-к разбивается на 2 (правый рисунок). Конечно положение новой точки D известно, но вызывающий об этом ничего не знает, для него по-прежнему существует лишь вмещающий тр-к ABC и alpha и beta по-прежнему для ABC.

Как определить в какой из 2 новых тр-ков попадает точка и вычислить новые веса для этого тр-ка?

Спасибо
0
Миниатюры
Барицентрические координаты  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2014, 11:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Барицентрические координаты (Алгоритмы):

Координаты мыши
В общем идея такая: я двигаю мышь и у меня выводятся координаты, но при...

Координаты треугольника
Есть такая задача : Дан двухмерный массив 6х10. Каждая строка массива это три...

Координаты вершины треугольника
Даны координаты точки А и В и длинна сторон а и b. Нужно найти координаты точки...

Расчитать координаты клетки в изометрии
Добрий день. Мне нужно расчитать координаты клетки в масиве в изометрии....

Матрица расстояний -> координаты на плоскости
Здравствуйте. Имея координаты на плоскости мы с легкостью можем построить...

Барицентрические координаты
Стороны {A}_{1}{A}_{2} и {A}_{2}{A}_{0} базисного треугольника...

2
salam
174 / 155 / 28
Регистрация: 10.07.2012
Сообщений: 766
09.11.2014, 17:14 #2
в который из двух попадает P? можно посчитать площади треугольников с основаниями DB, DC, CB и вершиной Р, если она равна площади DBC, то точка внутренняя. наверняка если подумать найдутся способы по математичнее.
а как пересчитывать веса сказать трудно, не зная, откуда они вообще появлялись раньше.
если это был цвет и множество цветов довольно широко, то например так. пусть разделили треугольники по ребру AB. цвет точки A это вектор http://www.cyberforum.ru/cgi-bin/latex.cgi?(R_a, G_a, B_a), а цвет B - http://www.cyberforum.ru/cgi-bin/latex.cgi?(R_b, G_b, B_b). пусть http://www.cyberforum.ru/cgi-bin/latex.cgi?C = \frac{AD}{AB}. тогда цвет D - вектор http://www.cyberforum.ru/cgi-bin/latex.cgi?C \ \cdot \ (R_a + R_b, \ G_a + G_b, \ B_a + B_b). правда у этой формулы много наверняка вредных свойств.
0
Igor3D
1227 / 594 / 74
Регистрация: 01.10.2012
Сообщений: 2,844
09.11.2014, 18:09  [ТС] #3
Цитата Сообщение от salam Посмотреть сообщение
в который из двух попадает P? можно посчитать площади треугольников с основаниями DB, DC, CB и вершиной Р,
Конечно можно, но так теряется весь смысл (и скорость) работы в барицентрических - проще было работать в (x, y, z) т.е. cartesian

Цитата Сообщение от salam Посмотреть сообщение
если это был цвет и множество цветов довольно широко, то например так. пусть разделили треугольники по ребру AB. цвет точки A это вектор http://www.cyberforum.ru/cgi-bin/latex.cgi?(R_a, G_a, B_a), а цвет B - http://www.cyberforum.ru/cgi-bin/latex.cgi?(R_b, G_b, B_b). пусть http://www.cyberforum.ru/cgi-bin/latex.cgi?C = \frac{AD}{AB}. тогда цвет D - вектор http://www.cyberforum.ru/cgi-bin/latex.cgi?C \ \cdot \ (R_a + R_b, \ G_a + G_b, \ B_a + B_b). правда у этой формулы много наверняка вредных свойств.
Пусть точка A красная, а B синяя. При приближении множителя "С" к нулю цвет стремится к черному. С какой стати? Он должен стремится к красному, т.к. P приближается к A. Для точек на ребре AB интерполируются gamma и alpha, beta = 0.
P.color = A.color * (1 - alpha) + B.color * alpha

Цитата Сообщение от salam Посмотреть сообщение
а как пересчитывать веса сказать трудно, не зная, откуда они вообще появлялись раньше.
Напр (x = 1, y = 2, z= 3), почему с этой точкой трудно работать и зачем знать кто установил x в 1? Что изменилось если вместо (x, y, z) есть (gamma, alpha, beta)?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2014, 18:09
Привет! Вот еще темы с решениями:

Даны координаты вершин треугольника и координаты некоторой точки внутри него
Даны координаты вершин треугольника и координаты некоторой точки внутри него....

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

Даны координаты вершин треугольника и координаты некоторой точки внутри него
Даны координаты вершин треугольника и координаты некоторой точки внутри него....

Вычислить декартовы координаты точки, имеющую следующие полярные координаты
Помгите пожалуйста с этими вопросами!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru