| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Формула пересчета координат из OCS в WCS

Формула пересчета координат из OCS в WCS

Ответ
Поиск в этой теме
Непрочитано 02.03.2016, 15:40 #1
Формула пересчета координат из OCS в WCS
bavilla
 
Регистрация: 02.03.2016
Сообщений: 6

Здравствуйте!
Кто поделится формулой пересчета координат из OCS в WCS? На примере LWPOLYLINE где заданы Elevation, X и Y узлов и значения "Extrusion direction". Ссылку на справку, где описан алгоритм давать не надо, нужна ФОРМУЛА с координатами узла. Заранее спасибо
Просмотров: 4241
 
Непрочитано 02.03.2016, 21:39
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,055



https://ru.wikipedia.org/wiki/%D0%90...BD%D0%B8%D0%B5
http://docs.autodesk.com/ACD/2010/EN...umber=d0e44236
trir на форуме  
 
Автор темы   Непрочитано 02.03.2016, 22:11
#3
bavilla


 
Регистрация: 02.03.2016
Сообщений: 6


А кто-нибудь может расписать формулу для реализации на С, например? Без теоретических выкладок и без использования функций объектной модели Autocad.
Например, для узла LWPOLYLINE:
38
500.0
10
-100.0
20
430.0

...

210
-0.216
220
0.976
230
0.0
bavilla вне форума  
 
Непрочитано 02.03.2016, 22:59
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


используй функцию trans
gomer вне форума  
 
Непрочитано 02.03.2016, 23:45
1 | #5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,841


gomer, судя по всему, у человека есть DXF-файл, который на С надо обработать. Без привязки к AutoCAD.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 03.03.2016, 02:25
#6
bavilla


 
Регистрация: 02.03.2016
Сообщений: 6


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
gomer, судя по всему, у человека есть DXF-файл, который на С надо обработать. Без привязки к AutoCAD.
Да, именно так. Прочитав в справке автокада раздел "Arbitrary Axis Algorithm", я так и не понял как вывести формулу пересчета из OCS в WCS. Поэтому и прошу тех, кто пересчитывал сам, без использования функций AutoLisp, поделиться решением.
bavilla вне форума  
 
Непрочитано 03.03.2016, 06:59
#7
trir


 
Регистрация: 18.12.2010
Сообщений: 5,055


VB.NET
Код:
[Выделить все]
        Private Function DrawLWPOLYLINE(wObj As MyDxfObject) As Model3DGroup
            Dim wlist As List(Of Point3D)
            Dim ElevationObj As MyDxfObj = wObj.FindFirstPara(New MyDxfPara(38, ""))
            If ElevationObj IsNot Nothing Then
                Dim Elevation As Double = ElevationObj.value
                wlist = DxfDraw.GetPointList(wObj, Elevation)
            Else
                wlist = DxfDraw.GetPointList(wObj)
            End If
            Dim ClosedObj As MyDxfObj = wObj.FindFirstPara(New MyDxfPara(70, ""))
            If ClosedObj IsNot Nothing Then
                If ClosedObj.value = 1 Then
                    wlist.Add(wlist(0))
                End If
            End If
            '
            Dim model As New Model3DGroup
            model.Children.Add(wGF.GetPolyLine(wlist))
            Dim norm As Vector3D = DxfDraw.GetDirection(wObj)
            model = GeometryFactory.toPlane(model, norm)
            '
            Return model
        End Function
Код:
[Выделить все]
        Public Shared Function toPlane(wMG As Model3DGroup, n As Vector3D) As Model3DGroup
            Dim zV As Vector3D = Vector3dExt.ZAxis
            Dim ang As Double = Vector3D.AngleBetween(zV, n)
            Dim rot As New AxisAngleRotation3D(Vector3D.CrossProduct(zV, n), ang)
            Dim wTC As New Transform3DGroup
            wTC.Children.Add(wMG.Transform)
            wTC.Children.Add(New RotateTransform3D(rot))
            wMG.Transform = wTC
            Return wMG
        End Function
Vector3D.AngleBetween
RotateTransform3D

Ещё могу порекомендовать ISBN 5-94157-264-6 формула 2.33

Последний раз редактировалось trir, 03.03.2016 в 08:10.
trir на форуме  
 
Автор темы   Непрочитано 03.03.2016, 15:07
#8
bavilla


 
Регистрация: 02.03.2016
Сообщений: 6


Спасибо за советы, но может все-таки кто-то сам делал пересчет? Без использования классов .NET и прочих?
bavilla вне форума  
 
Непрочитано 03.03.2016, 15:53
#9
trir


 
Регистрация: 18.12.2010
Сообщений: 5,055


а зачем?

Цитата:
Вы можете пользоваться почти любыми исходниками
В мире, где решена уже практическая любая прикладная задача, тратить время на то, чтобы написать ещё один велосипед — просто преступление по отношению к длительности своей жизни. Теперь вы можете взять любой репозиторий на любом языке и воспользоваться им как отправной точкой для своего решения. Вы пролетите свежим бризом над граблями, который до вас собрали тысячи других разработчиков.
https://habrahabr.ru/post/278467/
trir на форуме  
 
Автор темы   Непрочитано 03.03.2016, 16:02
#10
bavilla


 
Регистрация: 02.03.2016
Сообщений: 6


Цитата:
Сообщение от trir Посмотреть сообщение
Мне надо без использования сторонних библиотек, я об этом сразу написал. только <math.h>
Задача должна решаться с помощью простых арифметических и тригонометрических функций

----- добавлено через ~2 ч. -----
Всем спасибо, сделал так как мне было нужно, чистой арифметикой. Позже выложу пример на С, может кому-нибудь пригодится
bavilla вне форума  
 
Непрочитано 03.03.2016, 18:30
#11
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от trir Посмотреть сообщение
зачем?
Думаю это не прикладная задача, курсовик или что то подобное...


bavilla, Вот ссылка: https://github.com/JacobMDavidson/Co...Transformation , Мельком глянул, вроде то что Вы ищите.
Вам надо, Вы и разбирайтесь с кодом и выводите от туда формулу.
В любом случае trir, прав, искать стоит в уже написанном коде.
Удачи.
Boxa на форуме  
 
Автор темы   Непрочитано 04.03.2016, 01:59
#12
bavilla


 
Регистрация: 02.03.2016
Сообщений: 6


Еще раз всем спасибо за проявленное внимание)
Задача чисто прикладная. В софте, который мы разрабатываем, приходится иногда импортировать DXF. Тянуть для этого реализации сторонних разработчиков, .NET и тому подобное не имеет смысла и только ухудшает качество проекта. А мои дилетантские вопросы возникли во многом из-за качества справки по DXF. Попробуйте дать человеку не знакомому с "околоматематической" терминологией справки autodesk хотя бы то же описание "Arbitrary Axis Algorithm" и что он оттуда поймет? Цитирую: "Let the given normal vector be called N ..." Какой же он вектор нормали? Вектор нормали - это единичный вектор и т.д. А что значит "Scale Ax to unit length"? Те же проблемы и с описанием сплайнов, текстов и прочей геометрии.
bavilla вне форума  
 
Непрочитано 04.03.2016, 06:51
#13
trir


 
Регистрация: 18.12.2010
Сообщений: 5,055


в любом 3D так - вектора, матрицы, аффинные преобразования
trir на форуме  
 
Непрочитано 05.03.2016, 00:10
#14
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Попробуйте дать человеку не знакомому с "околоматематической" терминологией справки autodesk хотя бы то же описание "Arbitrary Axis Algorithm" и что он оттуда поймет?
Arbitrary Axis Algorithm это восстановление векторов x и y OCS по по вектору "нормали" z. Восстановление делается векторным произведением и вся "суть" этого "алгоритма" - просто выбор подходящего вектора Wx или Wy чтобы ненароком не помножить параллельные вектора

>>Scale Ax to unit length
насколько я понимаю это нормализация - приведение к еденичной длине, после умножения небольшая погрешность всеравно присутствует

>>А мои дилетантские вопросы возникли во многом из-за качества справки по DXF
Качество - для чтения dxf вполне хватает. А вот для записии - многое приходится догадываться и выяснять экспериментальным путем
zamtmn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Формула пересчета координат из OCS в WCS

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм пересчета координат из OCS в WCS Infi100% Программирование 5 26.10.2014 12:55
Какая система координат предпочтительна для генплана? randum Прочее. Архитектура и строительство 12 31.10.2013 17:11
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47
управление системой координат Автокад из Делфей Владимир В Программирование 12 27.04.2005 09:54