Эллипс вписанный в параллелограмм. Нужна книга или формула
От: DIMEDROLL Украина  
Дата: 13.02.09 08:24
Оценка:
Задача:
1. По заданным трём вершинам параллелограмма найти фокусы, полуоси, центр, вершины эллипса который вписанный в данный параллелограмм.
2. По заданным центру и полуосям найти вершины паралеллограмма в который вписан эллипс.

Посоветуйте книгу по данному материалу.
Re: Эллипс вписанный в параллелограмм. Нужна книга или форму
От: subdmitry Россия  
Дата: 13.02.09 09:09
Оценка:
Не задается однозначно. Для любого поворота стороны параллелограмма относительно большой оси эллипса можно найти касание, потом касание второй парой сторон (тоже можно выбрать угол в широком диапазоне), и вот он, описанный параллелограмм. То же касается вписывания — можно, например, делать эллипс толще/уже (играться с малой осью), и находить для широкого диапазона таких значений вписывание.
And if you listen very hard the alg will come to you at last.
Re[2]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: DIMEDROLL Украина  
Дата: 13.02.09 09:25
Оценка:
Здравствуйте, subdmitry, Вы писали:

S>Не задается однозначно.


Я не понял. Вы хотите сказать что в такой параллелограмм можно вписать несколько эллипсов или что?
Re[3]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: subdmitry Россия  
Дата: 13.02.09 10:01
Оценка:
Здравствуйте, DIMEDROLL, Вы писали:

DIM>Я не понял. Вы хотите сказать что в такой параллелограмм можно вписать несколько эллипсов или что?


Хочу сказать. Представьте себе, что эллипс становиться уже и немного более вытянутым. Запросто можно вписать.
And if you listen very hard the alg will come to you at last.
Re: Эллипс вписанный в параллелограмм. Нужна книга или форму
От: Кодт Россия  
Дата: 13.02.09 10:03
Оценка: +2
Здравствуйте, DIMEDROLL, Вы писали:

DIM>1. По заданным трём вершинам параллелограмма найти фокусы, полуоси, центр, вершины эллипса который вписанный в данный параллелограмм.

DIM>2. По заданным центру и полуосям найти вершины паралеллограмма в который вписан эллипс.

Эллипс однозначно строится не по 4, а по 5 точкам.
Здесь же получается семейство эллипсов, причём даже не соосных. Ну и, соответственно, семейство параллелограммов (для второго пункта).

Хотя центр любого эллипса, вписанного в данный параллелограмм, совпадает с центром параллелограмма.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re[4]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: DIMEDROLL Украина  
Дата: 13.02.09 10:33
Оценка:
Здравствуйте, subdmitry, Вы писали:

S>Хочу сказать. Представьте себе, что эллипс становиться уже и немного более вытянутым. Запросто можно вписать.


Тогда он не будет касаться всех четырех сторон. Если у вас есть пример или ссылка на несколько эллипсов вписанных в параллелограмм, поделитесь ими.
Re[5]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: subdmitry Россия  
Дата: 13.02.09 10:42
Оценка:
Здравствуйте, DIMEDROLL, Вы писали:

S>>Хочу сказать. Представьте себе, что эллипс становиться уже и немного более вытянутым. Запросто можно вписать.

DIM>Тогда он не будет касаться всех четырех сторон.

Почему не будет? Можно регулировать его вторую (большую) ось и угол ее наклона. Впишется. Два условия касания и два параметра — уравнение имеет решение.

Ну и сами подумайте, если вокруг одного эллипса можно описать целое семейство параллелограммов (надеюсь, это сомнений не вызывает?), как может быть, что в параллелограмм можно вписать только один эллипс?

DIM>Если у вас есть пример или ссылка на несколько эллипсов вписанных в параллелограмм, поделитесь ими.


Максимум могу нарисовать от руки, но будет довольно коряво.
And if you listen very hard the alg will come to you at last.
Re[6]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: DIMEDROLL Украина  
Дата: 13.02.09 11:15
Оценка:
Здравствуйте, subdmitry

Хорошо. И все таки мне нужна литература по эллипсам в параллелограмме.
Re[7]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: MBo  
Дата: 13.02.09 12:55
Оценка:
Здравствуйте, DIMEDROLL, Вы писали:

DIM>Здравствуйте, subdmitry


DIM>Хорошо. И все таки мне нужна литература по эллипсам в параллелограмме.


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

Если вам подойдет выбор одного из вариантов "красивого вписывания", то можно ограничиться, например, эллипсом, который касается середин сторон параллелограмма (примерно такой на приведенном рисунке). Его параметры нетрудно получить, если взять единичный квадрат со вписанной окружностью, и применить такое аффинное преобразование, которое переведет квадрат в нужный параллелограмм
Re[3]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: kamre Россия  
Дата: 17.02.09 02:04
Оценка: +1
Здравствуйте, DIMEDROLL, Вы писали:

DIM>Я не понял. Вы хотите сказать что в такой параллелограмм можно вписать несколько эллипсов или что?


Легко:
Re[8]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: DIMEDROLL Украина  
Дата: 17.02.09 08:35
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>Вряд ли существует именно такая литература, так что стоит смотреть книги по аналитической геометрии, главы о конических сечениях.


MBo>Если вам подойдет выбор одного из вариантов "красивого вписывания", то можно ограничиться, например, эллипсом, который касается середин сторон параллелограмма (примерно такой на приведенном рисунке). Его параметры нетрудно получить, если взять единичный квадрат со вписанной окружностью, и применить такое аффинное преобразование, которое переведет квадрат в нужный параллелограмм


Да. Именно такое "красивое вписывание" и есть у меня. Тоесть эллипс вписанный в параллелограмм таким образом что касается середин сторон параллелограмма. В книге "Энциклопедия элементарной математики. т 5 Геометрия" Александров П.С. нужной информации для решения задачи не нахожу, как и в остальных книгах...
Re[4]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: subdmitry Россия  
Дата: 17.02.09 11:55
Оценка:
Здравствуйте, kamre, Вы писали:

DIM>>Я не понял. Вы хотите сказать что в такой параллелограмм можно вписать несколько эллипсов или что?


K>Легко:


kamre, вы бы поделились с человеком формулами и сорцами. А то он все книги ищет.
And if you listen very hard the alg will come to you at last.
Re[9]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: MBo  
Дата: 17.02.09 12:56
Оценка:
Здравствуйте, DIMEDROLL, Вы писали:

DIM>Да. Именно такое "красивое вписывание" и есть у меня. Тоесть эллипс вписанный в параллелограмм таким образом что касается середин сторон параллелограмма. В книге "Энциклопедия элементарной математики. т 5 Геометрия" Александров П.С. нужной информации для решения задачи не нахожу, как и в остальных книгах...


В элементарной математике такого и не должно быть.

Пусть одна вершина параллелограмма A находится в начале координат (реальные координаты проще добавить в конце), смежные с ней B и С имеют координаты (bx,by) и (cx, cy).
Тогда аффинное преобразование, переводящее единичный квадрат с углом в начале координат в данный параллелограмм, описывается матрицей
AFF = (bx by 0)(cx cy 0)( 0 0 1)
Окружность, вписанная в квадрат, имеет уравнение (в общем виде для конических сечений Ax^2+Bxy+Cx^2+Dx+Ey+F=0, иногда B,D,E с коэффициентом 2 пишут)
x^2+y^2-x-y-1/4=0
или в матричном виде
[x y 1] * [CRCL] * [x y 1]^T = 0 (^T — транспозиция)
где СRCL = (1 0 -1/2)(0 1 -1/2)(-1/2 -1/2 1/4)
аффинное преобразование переводит уравнение в
[x y 1] * [AFF] * [CRCL] * [AFF]^T * [x y 1]^T = 0
произведение трех матриц в середине даст матрицу E, которую я посчитал в Maple, выписывать ее не буду, а сразу извлеку из нее параметры уравнения конического сечения
A=bx^2+by^2
B=2*(bx*cx+by*cy)
C=cx^2+cy^2
D=-bx-by
E=-cx-cy
F=1/4
Из этих данных уже можно вытащить все параметры эллипса. Например, наклон оси Tg(fi)=B/(A-C)
Но это уже самостоятельно...
Re[10]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 17.02.09 13:06
Оценка:
MBo>Например, наклон оси Tg(fi)=B/(A-C)

пардон, Tg(2*fi)=B/(A-C)
Re[5]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: kamre Россия  
Дата: 17.02.09 13:10
Оценка:
Здравствуйте, subdmitry, Вы писали:

S>kamre, вы бы поделились с человеком формулами и сорцами. А то он все книги ищет.


У меня нет готовых формул для этой задачки. А задачку я решал в общем виде с помощью геометрического решателя:



А для той gif анимации просто еще угол поварьировал для оси эллипса, чтобы показать, что у эллипса осталась одна степень свободы.
Re[6]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: subdmitry Россия  
Дата: 17.02.09 14:57
Оценка:
Здравствуйте, kamre, Вы писали:

K>Здравствуйте, subdmitry, Вы писали:


S>>kamre, вы бы поделились с человеком формулами и сорцами. А то он все книги ищет.


K>У меня нет готовых формул для этой задачки. А задачку я решал в общем виде с помощью геометрического решателя:


Ну вот этот геометрический решатель и может представлять ценность. Как он работает, это какой-то плавный подбор параметов пока окружающие эллипс стороны не станут как надо?
And if you listen very hard the alg will come to you at last.
Re[7]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: kamre Россия  
Дата: 18.02.09 02:38
Оценка:
Здравствуйте, subdmitry, Вы писали:

S>Как он работает, это какой-то плавный подбор параметов пока окружающие эллипс стороны не станут как надо?


Вроде того. Исходная задача формулируется в терминах геометрических объектов (точки, прямые, эллипс, ...) и ограничений (расстояние, угол, касание, инцидентность,...). В итоге генерируется нелинейная система уравнений (переменные — координаты объектов, а уравнения из ограничений получаются) и решается численным методом.

Так что к задаче топикстартера отношения мало на самом деле, у него все гораздо проще, и решается все аналитически (по готовым формулам).
Re[10]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: DIMEDROLL Украина  
Дата: 18.02.09 09:43
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>A=bx^2+by^2

MBo>B=2*(bx*cx+by*cy)
MBo>C=cx^2+cy^2
MBo>D=-bx-by
MBo>E=-cx-cy
MBo>F=1/4
MBo>Из этих данных уже можно вытащить все параметры эллипса. Например, наклон оси Tg(fi)=B/(A-C)
MBo>Но это уже самостоятельно...

Если А, B и С это точки вершин параллелограмма. То что означают коэффициенты D, E и F?
Re: Эллипс вписанный в параллелограмм. Нужна книга или форму
От: Кодт Россия  
Дата: 18.02.09 11:13
Оценка:
Здравствуйте, DIMEDROLL, Вы писали:

Давай сперва рассмотрим простую задачу: ромб, описанный вокруг окружности.

Окружность единичного радиуса с центром в центре координат.
Ромб, диагонали которого лежат на осях координат, касается окружности в точках (±cosa, ±sina).
Соответственно, вершины ромба — (±1/cosa, 0) и (0, ±1/sina).
А длина стороны ромба — 1/(cosa·sina).

Таким образом, меняя параметр a в интервале (0,П/2) мы получаем семейство ромбов.
Чтобы избавиться от тригонометрии, перейдём к s = sina, c = sqrt(1-s^2).

Ну а дальше — аффинные преобразования, сжимающие наш ромб до квадрата, а окружность превращается в эллипс.
При s->0 или s->1 эллипс вырождается до диагонали квадрата.

Было:
— эллипс с уравнением 1/xx+1/yy=1 (окружность)
— ромб с вершинами (1/(1-ss),0) и (0,1/s)

Масштабируем (x',y') = (x·sqrt(1-ss), y·s)
Получаем
— квадрат с вершинами (1,0) и (0,1)
— эллипс с уравнением (1/(1-ss))·1/xx + (1/ss)·1/yy = 1




Если нам нужно вписать эллипс в параллелограмм, то
— находим аффинное преобразование, переводящее квадрат с вершинами (0,±1),(1,±0) в исходный параллелограмм
— варьируя s, получаем семейство эллипсов и применяем к ним это преобразование

И наоборот, если нужно описать параллелограмм вокруг эллипса
— находим аффинное преобразование, переводящее эллипс в единичную окружность, а его оси — в оси координат
— варьируя s, получаем семейство ромбов и применяем к ним это преобразование




Кстати: аффинные преобразования могут вращать оси эллипса.
То есть, если у нас эллипс вписан в квадрат — его оси всегда лежат на диагоналях квадрата. Растянем квадрат до прямоугольника (анизотропно отмасштабируем) — оси спрыгнут с диагоналей.
Это чтоб не было иллюзий о быстром подходе к решению.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re[11]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 18.02.09 12:38
Оценка:
Здравствуйте, DIMEDROLL, Вы писали:

DIM>Если А, B и С это точки вершин параллелограмма. То что означают коэффициенты D, E и F?

Эх, зря я для обозначения вершин те же символы использовал...
Здесь A B C D E F- это коэффициенты уравнения общего вида для конических сечений (которое приводилось в скобках выше)
Re[12]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: DIMEDROLL Украина  
Дата: 18.02.09 14:24
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>Здесь A B C D E F- это коэффициенты уравнения общего вида для конических сечений (которое приводилось в скобках выше)


MBo>Из этих данных уже можно вытащить все параметры эллипса. Например, наклон оси Tg(fi)=B/(A-C)


Хорошо. А как узнать вершины, фокусы и длины радиусов эллипса? Мне нужны формулы или книга...
Re[2]: Эллипс вписанный в параллелограмм. Нужна книга или фо
От: Кодт Россия  
Дата: 18.02.09 14:45
Оценка:
К>- эллипс с уравнением 1/xx+1/yy=1 (окружность)

В этом месте меня проглючило... почему, не знаю сам. Вместо эллипса гиперболу получил

Было
— окружность xx+yy=1

Стало
— эллипс xx*(1-ss) + yy*ss = 1

Ну а дальше как с гусём.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re[13]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 19.02.09 05:26
Оценка:
Здравствуйте, DIMEDROLL, Вы писали:

DIM>Хорошо. А как узнать вершины, фокусы и длины радиусов эллипса? Мне нужны формулы или книга...


Охо-хо
http://mathworld.wolfram.com/Ellipse.html
Re[10]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: VovaMulder1983  
Дата: 18.03.09 13:47
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>Окружность, вписанная в квадрат, имеет уравнение (в общем виде для конических сечений Ax^2+Bxy+Cx^2+Dx+Ey+F=0, иногда B,D,E с коэффициентом 2 пишут)

MBo>x^2+y^2-x-y-1/4=0
MBo>или в матричном виде
MBo>[x y 1] * [CRCL] * [x y 1]^T = 0 (^T — транспозиция)
MBo>где СRCL = (1 0 -1/2)(0 1 -1/2)(-1/2 -1/2 1/4)
MBo>аффинное преобразование переводит уравнение в
MBo>[x y 1] * [AFF] * [CRCL] * [AFF]^T * [x y 1]^T = 0
MBo>произведение трех матриц в середине даст матрицу E, которую я посчитал в Maple, выписывать ее не буду, а сразу извлеку из нее параметры уравнения конического сечения
MBo>A=bx^2+by^2
MBo>B=2*(bx*cx+by*cy)
MBo>C=cx^2+cy^2
MBo>D=-bx-by
MBo>E=-cx-cy
MBo>F=1/4
MBo>Из этих данных уже можно вытащить все параметры эллипса. Например, наклон оси Tg(fi)=B/(A-C)
MBo>Но это уже самостоятельно..

Интересно, а как у Вас получилось так элегантно разложить уравнение окружности на матричное произведение? И более общий вопрос — как уравнение кривой (допустим, общее 2-го порядка) преобразовать аффинными преобразованиями, т.е. получить новое уравнение? Если можно, то укажите источник
Re[11]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 18.03.09 14:29
Оценка:
Здравствуйте, VovaMulder1983, Вы писали:

VM> — как уравнение кривой (допустим, общее 2-го порядка) преобразовать аффинными преобразованиями, т.е. получить новое уравнение?

Так это как раз и сделано. Матрица (CRCL в данном случае):
A B/2 D/2
B/2 C E/2
D/2 E/2 F

(в скане книги Роджерса она приведена с опечаткой)



VM>> Если можно, то укажите источник


Прямого источника нет, идеи разложения из Роджерса — Математические основы машинной графики и, возможно, что-то из Schneider P.J., Eberly D.H. Geometric tools for computer graphics. Eberly еще пописывает в news-группу comp.graphics.algorithms
Re[12]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: VovaMulder1983  
Дата: 18.03.09 14:46
Оценка:
Здравствуйте, MBo, Вы писали:

Спасибо за матрицу разложения, но Вы не ответили, как разложить уравнение, имея такую матрицу. Насколько я понял из Вашего примера, то уравнение f(x,y) с матрицей разложения М приобретает следующий матричный вид

MBo>[x y 1] * [М] * [x y 1]^T = 0


А для того, чтобы подействовать на уравнение f(x,y) афинными преобразованиями и получить новое уравнение f'(x,y), Вы приводите следующую запись

MBo>[x y 1] * [AFF] * [М] * [AFF]^T * [x y 1]^T = 0


Вот, как она получилась? Я понимаю так: [AFF] здесь уместно, т.к. она собственно и есть афф.пр., а вот почему тут [AFF]^T — мне не ясно. Объясните, плиз, или киньте ссылку на источник
Re[13]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 18.03.09 18:20
Оценка:
Здравствуйте, VovaMulder1983, Вы писали:

VM>Здравствуйте, MBo, Вы писали:


VM>Спасибо за матрицу разложения, но Вы не ответили, как разложить уравнение, имея такую матрицу. Насколько я понял из Вашего примера, то уравнение f(x,y) с матрицей разложения М приобретает следующий матричный вид


MBo>>[x y 1] * [М] * [x y 1]^T = 0


VM>А для того, чтобы подействовать на уравнение f(x,y) афинными преобразованиями и получить новое уравнение f'(x,y), Вы приводите следующую запись


MBo>>[x y 1] * [AFF] * [М] * [AFF]^T * [x y 1]^T = 0


VM>Вот, как она получилась? Я понимаю так: [AFF] здесь уместно, т.к. она собственно и есть афф.пр., а вот почему тут [AFF]^T — мне не ясно. Объясните, плиз, или киньте ссылку на источник


Вот так если сгруппировать, должно быть понятнее
( [x y 1] * [AFF] ) * [М] * ( [AFF]^T * [x y 1]^T ) = 0
первая скобка — вектор-строка координат после преобразования, а последняя — он же транспонированный (вектор-столбец) (по свойству (A*B)^T = B^T*A^T)
Re[14]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: VovaMulder1983  
Дата: 19.03.09 12:54
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>Вот так если сгруппировать, должно быть понятнее

MBo>( [x y 1] * [AFF] ) * [М] * ( [AFF]^T * [x y 1]^T ) = 0
MBo>первая скобка — вектор-строка координат после преобразования, а последняя — он же транспонированный (вектор-столбец) (по свойству (A*B)^T = B^T*A^T)

Спасибо, я уже догнал + Роджерс очень помог
Re[14]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: VovaMulder1983  
Дата: 19.03.09 15:11
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>Пусть одна вершина параллелограмма A находится в начале координат (реальные координаты проще добавить в конце), смежные с ней B и С имеют координаты (bx,by) и (cx, cy).

MBo>Тогда аффинное преобразование, переводящее единичный квадрат с углом в начале координат в данный параллелограмм, описывается матрицей
MBo>AFF = (bx by 0)(cx cy 0)( 0 0 1)
MBo>Окружность, вписанная в квадрат, имеет уравнение (в общем виде для конических сечений Ax^2+Bxy+Cx^2+Dx+Ey+F=0, иногда B,D,E с коэффициентом 2 пишут)
MBo>x^2+y^2-x-y-1/4=0
MBo>или в матричном виде
MBo>[x y 1] * [CRCL] * [x y 1]^T = 0 (^T — транспозиция)
MBo>где СRCL = (1 0 -1/2)(0 1 -1/2)(-1/2 -1/2 1/4)
MBo>аффинное преобразование переводит уравнение в
MBo>[x y 1] * [AFF] * [CRCL] * [AFF]^T * [x y 1]^T = 0
MBo>произведение трех матриц в середине даст матрицу E, которую я посчитал в Maple, выписывать ее не буду, а сразу извлеку из нее параметры уравнения конического сечения
MBo>A=bx^2+by^2
MBo>B=2*(bx*cx+by*cy)
MBo>C=cx^2+cy^2
MBo>D=-bx-by
MBo>E=-cx-cy
MBo>F=1/4
MBo>Из этих данных уже можно вытащить все параметры эллипса. Например, наклон оси Tg(fi)=B/(A-C)
MBo>Но это уже самостоятельно..

1) Вы уверены в правильности матрицы AFF? у меня вышло (сx сy 0)(bx by 0)( 0 0 1) (это 3 строки)
2) Я вычислил коэффициенты A — F, после чего вычислил угол ФИ, центр и радиусы (исходя из коэффициентов), но они явно неправильные, я всё трижды перепроверил, использовал Вашу матрицу афф.пр. вместо своей, но ничего не помогает. Вычисления параметров эллипса брал отсюда http://mathworld.wolfram.com/Ellipse.html
Если есть какие-то замечания, буду признателен
Re[15]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 19.03.09 17:07
Оценка:
Здравствуйте, VovaMulder1983, Вы писали:

VM>1) Вы уверены в правильности матрицы AFF? у меня вышло (сx сy 0)(bx by 0)( 0 0 1) (это 3 строки)

это просто разный порядок именования вершин, наверно. Иначе различие скажется в виде отраженного параллелограмма

VM>2) Я вычислил коэффициенты A — F, после чего вычислил угол ФИ, центр и радиусы (исходя из коэффициентов), но они явно неправильные, я всё трижды перепроверил, использовал Вашу матрицу афф.пр. вместо своей, но ничего не помогает. Вычисления параметров эллипса брал отсюда http://mathworld.wolfram.com/Ellipse.html


Учтено, что часть коэффициентов в общем уравнении кривой у меня удвоенные, а на этой страничке нет?
Re[15]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 20.03.09 07:55
Оценка:
Здравствуйте, VovaMulder1983, Вы писали:

VM>Если есть какие-то замечания, буду признателен


При проверке примера нашел у себя принципиальную ошибку. Место и причину пока не локализовал, найду, есди появится время.
Re[16]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: VovaMulder1983  
Дата: 20.03.09 08:57
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>это просто разный порядок именования вершин, наверно. Иначе различие скажется в виде отраженного параллелограмма


согласен

MBo>Учтено, что часть коэффициентов в общем уравнении кривой у меня удвоенные, а на этой страничке нет?


Я это учел, и все равно не выходит
Re[16]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: VovaMulder1983  
Дата: 20.03.09 09:11
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>При проверке примера нашел у себя принципиальную ошибку. Место и причину пока не локализовал, найду, есди появится время.


и в Вашей, и в моей результирующих матрицах эллипса коэф В зависит от bx*cx+by*cy (у меня он равен bx*cx+by*cy , у Вас равен 2*(bx*cx+by*cy)). Привожу пример:
есть прямоугольник с вершинами B(-b, b) A(0, 0) C(c, c) D (c — b, c + b)
b > 0, c > 0
это прямоугольник, лежащий одной вершиной (A) в начале координат, "правой" смежной вершиной (B) на прямой y = x и "левой" смежной вершиной (C) на прямой y = -x

Таким образом, B = bx*cx+by*cy = | bx = -b, cx = c, by = b, cy = c| = -b * c + b * c = 0
Отсюда выходит, что эллипс, вписанный в такой прямогульник, выложен по координатным осям (его оси параллельны коорд. осям), но ведь это не так — угол наклона большой оси такого эллипса будет = 45 градусов.

Выходит, что принципиальная ошибка находится в изначальном подходе вычисления матрицы коэффициентов для уравнения эллипса
[x y 1] * [AFF] * [CRCL] * [AFF]^T * [x y 1]^T

Буду очень признателен, если у Вас появится время
Re[17]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 20.03.09 11:45
Оценка:
Здравствуйте, VovaMulder1983, Вы писали:

MBo>>При проверке примера нашел у себя принципиальную ошибку. Место и причину пока не локализовал, найду, есди появится время.

VM>Буду очень признателен, если у Вас появится время

Матрица обратная нужна была!
Вот так работает:

procedure CalcEllParams(bx, by, cx, cy: Integer; var A, B, C, D, E, F: Double);
var
  Cross, CrossSqr: Double;
begin
  Cross := 1/(bx * cy - cx * by);
  CrossSqr := Sqr(Cross);
  A := CrossSqr*(Sqr(cy) + Sqr(by));
  B := - 2 * CrossSqr* (cy * cx + by * bx);
  C := CrossSqr * (Sqr(cx) + Sqr(bx));
  D := Cross * (by - cy);
  E := Cross * (cx - bx);
  F := 1/4;
end;


http://files.rsdn.ru/17418/ell.gif
Re[18]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: VovaMulder1983  
Дата: 20.03.09 14:54
Оценка:
Здравствуйте, MBo, Вы писали:

MBo>
MBo>procedure CalcEllParams(bx, by, cx, cy: Integer; var A, B, C, D, E, F: Double);
MBo>var
MBo>  Cross, CrossSqr: Double;
MBo>begin
MBo>  Cross := 1/(bx * cy - cx * by);
MBo>  CrossSqr := Sqr(Cross);
MBo>  A := CrossSqr*(Sqr(cy) + Sqr(by));
MBo>  B := - 2 * CrossSqr* (cy * cx + by * bx);
MBo>  C := CrossSqr * (Sqr(cx) + Sqr(bx));
MBo>  D := Cross * (by - cy);
MBo>  E := Cross * (cx - bx);
MBo>  F := 1/4;
MBo>end;
MBo>


MBo>http://files.rsdn.ru/17418/ell.gif


Спасибо за готовое решение

MBo>Матрица обратная нужна была!

MBo>Вот так работает:

но не могли бы Вы привести изначальную модель (в матричном виде) и показать, где там нужна была обратная матрица
Re[19]: Эллипс вписанный в параллелограмм. Нужна книга или ф
От: MBo  
Дата: 20.03.09 15:29
Оценка:
Здравствуйте, VovaMulder1983, Вы писали:

VM>но не могли бы Вы привести изначальную модель (в матричном виде) и показать, где там нужна была обратная матрица


Матрица аффинного преобразования была нужна обратная (т.е. преобразования из параллелограмма в единичный квадрат).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.