есть ли возможность используя Matrix3d и Matrix2d решать уравнения

Автор Тема: есть ли возможность используя Matrix3d и Matrix2d решать уравнения  (Прочитано 8749 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн ФедяАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: -1
Есть встроенные, наверное структуры, Autodesk.AutoCAD.Geometry.Matrix3d и Autodesk.AutoCAD.Geometry.Matrix2d, я так понимаю можно решать линейные уравнения используя autocad без сторонних библиотек?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
я так понимаю можно решать линейные уравнения используя autocad без сторонних библиотек?
Готовых алгоритмов в AutoCAD .NET API для решения линейных уравнений нет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ФедяАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: -1
есть метод для получения детерминанта и обратной матрицы, смущает только заполнение матрицы, когда данные в одну строку, они не очень наглядны в представлении, возможно ли прикрутить перечислитель какой-нибудь чтобы были коэффициенты, то есть можно было в привычной манере задать элемент, подобно тому как приводятся в многочисленных примерах? 

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
возможно ли прикрутить перечислитель какой-нибудь чтобы были коэффициенты, то есть можно было в привычной манере задать элемент, подобно тому как приводятся в многочисленных примерах? 
Прикрутить можно всё что угодно. Но эти матрицы предназначены только для конкретной цели - преобразования систем координат.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ФедяАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: -1
мне кажется они универсальны, даже больше чем может показаться на первый взгляд, попробую пример предоставить, инженерам может быть интересно решение задач в одной среде без всяких там обменных файлов

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Универсальный скорее Matrix3dBuilder, так как элементам Matrix3d нельзя присвоить значения (они read-only):

Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.Geometry;
  4. using Autodesk.AutoCAD.EditorInput;
  5.  
  6. [assembly: CommandClass(typeof(Matrix3dOper.MyCommands))]
  7.  
  8. namespace Matrix3dOper
  9. {
  10.   public class MyCommands
  11.   {
  12.     [CommandMethod("TestMat")]
  13.     public void TestMat()
  14.     {
  15.       Document doc = Application.DocumentManager.MdiActiveDocument;
  16.       if (doc == null) return;
  17.       Editor ed = doc.Editor;
  18.       Matrix3d mat = ed.CurrentUserCoordinateSystem;
  19.       for (int i = 0; i < 4; i++) {
  20.         for (int j = 0; j < 4; j++)
  21.           ed.WriteMessage("UCS[{0}][{1}]={2,-12:N6}\t", i, j, mat[i, j]);
  22.         ed.WriteMessage("\n");
  23.       }
  24.       //////////////////////////////////////////////////////////////////////////
  25.       //  Присвоение типа 'mat[i,j] = значение' недопустимо,
  26.       //  т.к. доступ к элементу только для чтения
  27.       //  Для возможности модификации элементов вместо Matrix3d
  28.       //  следует использовать Matrix3dBuilder
  29.       //////////////////////////////////////////////////////////////////////////
  30.  
  31.       Matrix3dBuilder matb = new Matrix3dBuilder(mat);
  32.       for (int i = 0; i < 4; i++)
  33.         for (int j = 0; j < 4; j++)
  34.           // Формируем единичную диагональную матрицу
  35.           matb[i, j] = (i == j) ? 1.0 : 0.0;
  36.       for (int i = 0; i < 4; i++) {
  37.         for (int j = 0; j < 4; j++)
  38.           ed.WriteMessage("matb[{0}][{1}]={2,-12:N6}\t", i, j, matb[i, j]);
  39.         ed.WriteMessage("\n");
  40.       }
  41.     }
  42.   }
  43. }



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
помутнение сознания

мне кажется для расчётов лучше использовать более удобные вещи, например ipython - его и с AutoCAd можно подружить

Оффлайн ФедяАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: -1
спасибо, я ведь правильно понимаю, что Autodesk.AutoCAD.Geometry.Matrix2d это матрица 3х3, а Autodesk.AutoCAD.Geometry.Matrix3d 4х4

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
спасибо, я ведь правильно понимаю, что Autodesk.AutoCAD.Geometry.Matrix2d это матрица 3х3, а Autodesk.AutoCAD.Geometry.Matrix3d 4х4
Это вопрос или утверждение? Если вопрос - то ответ "Да".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ФедяАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: -1
да был вопрос, кстати Autodesk.AutoCAD.Geometry.Matrix2d и Autodesk.AutoCAD.Geometry.Matrix3d имеют конструктор принимающий параметры ввиде массива

Оффлайн ФедяАвтор темы

  • ADN OPEN
  • Сообщений: 33
  • Карма: -1
помутнение сознания
у меня как у инженера есть работа основная, у меня беда с математикой, приходится догонять и осваивать питоны, явы, лиспы и дружить их мне некогда. В идеале вся работа должна делаться, у меня, оговорюсь, в одной среде, код должен быть максимально короткий, там где есть метод получения детерминанта, должен быть метод в одну строку, чтобы через два года отсутствия практики  я мог взглянуть на него и понять что это то что нужно