Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс для работы с 3-х мерными векторами. 
:(
    Опции темы
Elfet
  Дата 27.5.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Вот мне нужен такой класс, самому лень писать, а найти не смог  smile 
Заранее спасибо! smile


--------------------
PM MAIL WWW Skype   Вверх
marcusmae
Дата 27.5.2007, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Elfet, уточните, пожалуйста, что именно с этими векторами Вы хотите делать. А то так трудно советовать. Может, подойдёт это?


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Elfet
Дата 27.5.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Складывать, вычитать, умножать скалярно, векторно, умножать на матрицу - что-то в этом роде smile


--------------------
PM MAIL WWW Skype   Вверх
marcusmae
Дата 27.5.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Цитата(Elfet @  27.5.2007,  19:08 Найти цитируемый пост)
Складывать, вычитать, умножать скалярно, векторно, умножать на матрицу - что-то в этом роде 

Тогда, то, что я предложил, может подойти + это есть в DirectX и в XNA, если у Вас стоит.

Да, оно, кстати, и самому прикольно поиграться, по-моему :
Код

public class Vector3d
{
    private double[] values = new values[3];
    
    // Default
    public double this[int index]
    {
        get { return this.values[index]; }
        set { this.values[index] = value; }
    }

    // Scalar Multiply
    public void Multiply(double scalar)
    {
        for (int index= 0; index< values.Length; index++)
            this.value[index]*=scalar;
    }

    // Dot Product
    public void Multiply(Vector3d vector)
    {
        for (int index= 0; index< values.Length; index++)
            this.value[index]*=vector[index];        
    }

    public static Vector3d operator* (Vector3d vector1, Vector3d vector2)
    {
        Vector3d result = new Vector3d();
        for (int index= 0; index< values.Length; index++)
            result[index] = vector1[index] * vector2[index];

        return result;
    }

    public static Vector3d operator+ (Vector3d vector1, Vector3d vector2)
    {
        Vector3d result = new Vector3d();
        for (int index= 0; index< values.Length; index++)
            result[index] = vector1[index] + vector2[index];

        return result;
    }

    public static Vector3d operator- (Vector3d vector1, Vector3d vector2)
    {
        Vector3d result = new Vector3d();
        for (int index= 0; index< values.Length; index++)
            result[index] = vector1[index] - vector2[index];

        return result;
    }
}


Код

public class Matrix3d
{
    private Vector3d[] rows = new Vector3d[3];

    public Matrix3d()
    {
        for (int index=0; index<rows.Length; index++)
             rows[index] = new Vector3d();
    }

    // Row-wise default.
    public Vector3d this[int index]
    {
        get { return this.rows[index];}
        set { this.rows[index] = value; }
    }

    // Defualt
    public double this[int rowIndex, int colIndex]
    {
        get { return this.rows[rowIndex][colIndex]; }
        set { this.rows[rowIndex][colIndex] = value; }
    }

    public Vector3d RightMultiply(Vector3d vector)
    {
        Vector3d result = new Vector3d();
        for (int rowIndex=0; rowIndex<3; rowIndex++)
            for (int colIndex=0; colIndex<3; colIndex++)
                result[rowIndex] += this.rows[rowIndex,colIndex] * vector[colIndex];

        return result;
    }
}

 smile 

Это сообщение отредактировал(а) marcusmae - 27.5.2007, 20:37


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Elfet
Дата 27.5.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



smile

System.Drawing.Drawing2D.Matrix - для аффинных преобразований 3х3

В присоединение класс для векторов 3-х мерных smile


Это сообщение отредактировал(а) Elfet - 27.5.2007, 21:32

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  Vector3F.cs 28,83 Kb


--------------------
PM MAIL WWW Skype   Вверх
marcusmae
Дата 27.5.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



Ну, вот и отлично  smile
Только Вы осторожнее с исходниками, а то я с интересом пронаблюдал, как там в комментариях один товарищ очень переживал по поводу "украденных" у него интеллектуальных прав на квадратурную формулу Симпсона (цикл в три строчки).  smile Я плакаль. 

Это сообщение отредактировал(а) marcusmae - 27.5.2007, 22:05


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0867 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.