Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как реализовать класс Vector на массиве?

81K
24 декабря 2013 года
nervs
10 / / 03.07.2013
Помогите реализовать класс вектор на массиве для выполнения над векторами операций: сложение, вычитание, умножение на число и вывод вектора.
Сам реализовывал через конструктор, но нужно на массиве, вот мой код:
Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsFormsApplication1
{
    class Vector
    {
        public Vector(double x, double y, double z) //конструктор
        {
            X = x;
            Y = y;
            Z = z;
        }

        public double x, y, z;
        public double X
        {
            get;
            set;
        }
        public double Y
        {
            get;
            set;
        }
        public double Z
        {
            get;
            set;
        }

        public double Length //длина
        {
            get
            {
                return Math.Sqrt(X * X + Y * Y + Z * Z);
            }
        }
        public static Vector operator *(Vector v, double r) // умножение на число
        {
            return new Vector(v.x * r, v.y * r, v.z * r);
        }
        public static Vector operator +(Vector l, Vector r) //сложение
        {
            return new Vector(l.X + r.X, l.Y + r.Y, l.Z + r.Z);
        }
        public static Vector operator -(Vector l, Vector r) //вычитание
        {
            return new Vector(l.X - r.X, l.Y - r.Y, l.Z - r.Z);
        }
        public static double operator *(Vector l, Vector r) //скалярное произведение
        {
            return (l.X * r.X + l.Y * r.Y + l.Z * r.Z);
        }
        public static double Cos(Vector l, Vector r) //косинус между векторами
        {
            return (l * r) / (l.Length * r.Length);
        }
        public static double Norma1(Vector l)
        {
            return Math.Max(Math.Abs(l.X), Math.Max(Math.Abs(l.Y), Math.Abs(l.Z)));
        }

        public static double Norma2(Vector l)
        {
            return Math.Abs(l.X) + Math.Abs(l.Y) + Math.Abs(l.Z);
        }

        public static double Norma3(Vector l)
        {
            return Math.Sqrt(Math.Pow(l.X, 2) + Math.Pow(l.Y, 2) + Math.Pow(l.Z, 2));
        }
    }
}
  • Что значит "на массиве"? от Der Meister, 25 декабря 2013 года
81K
25 декабря 2013 года
nervs
10 / / 03.07.2013
C этим разобрался, теперь как вывести полученный вектор на экран(создал Form1.cs)?
41K
25 декабря 2013 года
dreamlore
23 / / 19.05.2013
http://www.cyberforum.ru/csharp-net/thread140219.html
81K
25 декабря 2013 года
nervs
10 / / 03.07.2013
А как именно реализовать, после сложения двух векторов я получил на допустим { 5 7 9} как мне эти координаты преобразовались вектор и нарисовался он в PictureBox
41K
25 декабря 2013 года
dreamlore
23 / / 19.05.2013
значит в PictureBox придётся рисовать трёхмерный вектор средствами OpenGL, ну это лично мой вариант.
81K
27 декабря 2013 года
nervs
10 / / 03.07.2013
Как тогда двухмерный вектор в PictureBox рисовать?
93K
06 марта 2014 года
zenkovich
1 / / 06.03.2014
Можете скинуть код, который с массивами получился?
44K
06 марта 2014 года
vvmCpp
32 / / 21.01.2014
Почему нужно изобретать свой вектор а не взять его из стандартной библиотеки?

Например так:

 
Код:
#include <vector>
...

Код:
int main(int argc, char *argv[])
{
// какой-то массив
int a[4]={10,0,25,40};

// инициализация вектора нашим массивом
    vector<int>  v(a,a+4);

// теперь к вектору можно применять алгоритмы которые есть в #include <algorithm>
// или придумывать свои алгоритмы
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог