Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: enot от 17-12-2019, 15:22:29

Название: Смысл UV
Отправлено: enot от 17-12-2019, 15:22:29
Момент настал.
верно ли , что
Код - C# [Выбрать]
  1. Face.ComputeNormal(new UV(0.5, 0.5))
вычислит нормальный вектор начало которого будет в  геометрическом центре Face ?

верно ли , что в
Код - C# [Выбрать]
  1. new UV(u, v)
u  и v может принимать значение от 0 до 1 ?
 



Название: Re: Смысл UV
Отправлено: Александр Ривилис от 17-12-2019, 15:45:34
верно ли , что в
Код - C# [Выбрать]

    new UV(u, v)

u  и v может принимать значение от 0 до 1 ?
В общем случае может иметь и другие значения.
Название: Re: Смысл UV
Отправлено: Александр Игнатович от 17-12-2019, 15:50:40
Нет, не верно.

Через UV в Revit аналитически описываются поверхности, в зависимости от типа u, v имеет разный смысл, например, для цилиндра это:
Цитировать
The parametric equation of the cylinder is S(u, v) = center + radius*cos(u)*xVec + radius*sin(u)*yVec + v*zVec.

К "геометрическому центру" не имеет никакого отношения
Название: Re: Смысл UV
Отправлено: enot от 17-12-2019, 16:03:18
The parametric equation of the cylinder is S(u, v) = center + radius*cos(u)*xVec + radius*sin(u)*yVec + v*zVec.
предчувствую начало трешака. ну ладно, зато интересно изучать будет

К "геометрическому центру" не имеет никакого отношения

а если Face плоский (прямоугольник на плоскости)?
Face.ComputeNormal(new UV(0.5, 0.5))
не вернет его вектор в центре?

Название: Re: Смысл UV
Отправлено: Александр Игнатович от 17-12-2019, 16:05:28
Для плоскости можно в любой точке нормаль будет одинакова. Можно, например
Код - C# [Выбрать]
  1. Face.ComputeNormal(UV.Zero)
Название: Re: Смысл UV
Отправлено: enot от 17-12-2019, 16:11:15
я как то раньше думал что  значения в UV(u, v) работают аналогично

u=curveX.Evaluate(value, true)
v= curveY.Evaluate(value, true)

где (value = 0...1)
Название: Re: Смысл UV
Отправлено: Александр Игнатович от 17-12-2019, 16:16:42
Вообще есть метод у Face-а:
Цитировать
public BoundingBoxUV GetBoundingBox()

В паре частных случаев (u, v) действительно будет в пределах 0..1, в чуть большем количестве случаев будет от (-u, -v) до (u, v), но я бы на всё это полагаться не стал
Название: Re: Смысл UV
Отправлено: enot от 17-12-2019, 16:20:54
но я бы на всё это полагаться не стал
на что следует полагаться? нужно знать формулы для каждой фигуры  (плоскость, цилиндр, сфера и т.д.)?
подобно
The parametric equation of the cylinder is S(u, v) = center + radius*cos(u)*xVec + radius*sin(u)*yVec + v*zVec.
Название: Re: Смысл UV
Отправлено: Александр Ривилис от 17-12-2019, 16:23:19
на что следует полагаться?
А в чем вопрос? Зачем нужно знать формулу вычисления UV? Для получения вектора нормали в центре Face?
Название: Re: Смысл UV
Отправлено: enot от 17-12-2019, 16:24:20
А в чем вопрос? Зачем нужно знать формулу вычисления UV? Для получения вектора нормали в центре Face?
Я хочу понять физический смысл UV в принципе.
Сейчас я это понимаю как собственную координатную систему Face фигуры. за нуль координат принимается какая то точка на поверхности, и по значениям uv от нее по XY отсчитывается эти значения. если взять Face который является прямоугольником то максимальные значения будут от 0 до u=Ширина прямоугольника, v= Длина прямоугольника. UV нужна чтобы определить определенную точку на поверхности Face
Название: Re: Смысл UV
Отправлено: Александр Ривилис от 17-12-2019, 16:25:37
Я хочу понять физический смысл UV в принципе
У него нет физического смысла. Точнее это некая абстракция для преобразования 2D в 3D.
Название: Re: Смысл UV
Отправлено: Александр Игнатович от 17-12-2019, 16:36:45
Координаты точек аналитической поверхности, смысл появляется для какой-то конкретной поверхности, если это плоскость, то u совпадает с XVec, v - c YVec, для цилиндра это угол поворота и смещение по его оси и т.д.

если взять Face который является прямоугольником

А вот тут уже путаешь мокрое с мягким. UV - именно для аналитических поверхностей, без учёта границ. Прямоугольные границы у тебя, например, могут не быть коллинеарными векторам, описывающим плоскость XVec и YVec, углы опять же никоим образом не обязаны совпадать с началом координат и т.д.