векторы против векторной графики

Какая (если есть) связь между векторами, используемыми в языках программирования (например, массивами) и векторной графикой?

Почему они используют термин вектор? Представляет ли это какой-то аналогичный аспект их природы или это совпадение?

Если подумать, растровое изображение лучше подходит для термина «векторная графика», поскольку оно представлено массивом пикселей.


person sharkin    schedule 09.12.2009    source источник
comment
Почему слово свинья может использоваться для обозначения вида млекопитающего и металлического слитка? Таковы человеческие языки, особенно английский.   -  person    schedule 09.12.2009
comment
Но вектор в каждом случае получается из одной и той же математической конструкции.   -  person klochner    schedule 09.12.2009
comment
Только если вы думаете, что понятие набора значений и направления — это одно и то же.   -  person    schedule 09.12.2009
comment
Упорядоченный набор значений по своей сути имеет направление.   -  person klochner    schedule 09.12.2009
comment
Хорошо, каково направление [1,2,3]?   -  person    schedule 09.12.2009
comment
Это зависит от вашей системы координат. Предполагая евклидово пространство, это будет 1 \ шляпа {i}, 2 \ шляпа {j}, 3 \ шляпа {k}, где обычно принимается начало координат (0,0,0) в качестве начальной точки. Разница между набором и вектором в том, что (1,2,3) != (1,3,2)   -  person klochner    schedule 09.12.2009


Ответы (5)


вектор - это набор значений, которые "обычно" (математики меня бы убили) представляют собой коэффициенты линейной комбинации вещей (функций или других векторов).

Например, когда вы говорите

[4, 3, 7]

и ваша основа - это набор показателей степени x (т.е. 1, x, x ^ 2, x ^ 3 и т. д.), этот вектор выражает многочлен

4 + 3x + 7 x^2

если вы используете другую основу, например, произвольные направления в трехмерном пространстве, тот же вектор выражает направление в трехмерном пространстве.

4i + 3j + 7k

(боковое рассмотрение: обратите внимание, что трехмерное пространство является конечным векторным пространством размерности 3, в то время как полиномиальное пространство является бесконечным векторным пространством или гильбертовым пространством, поскольку оно лучше определено)

Это вектор (представьте себе стрелку), указывающий в определенном направлении в пространстве, от начала до конца. Соглашение состоит в том, что i, j и k являются так называемыми базисными векторами трехмерного векторного пространства, где координаты каждой точки выражаются как x, y и z. Другими словами, каждую точку в пространстве и каждое направление в пространстве можно выразить тройкой чисел (вектором) x, y, z, которая представляет пространственный вектор x * i + y * j + z * k.

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

person Stefano Borini    schedule 09.12.2009
comment
Это лучшее из приведенных объяснений. - person Ankur Goel; 10.12.2009

Они имеют общее корневое значение в математике.

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

Значение языка программирования (упорядоченный набор чисел) — это один из способов записи математической версии.

person dmckee --- ex-moderator kitten    schedule 09.12.2009

Вектор — это упорядоченная группа значений, например <1, 2, 3>. Он отличается от массива тем, что имеет фиксированный размер и представляет ряд значений, а их положение в векторе имеет значение. Массив — это просто упорядоченный набор вещей. Порядок элементов имеет значение, но не их положение. Вещи в нем, как правило, все однотипные.

Если бы вектор представлял <# apples, # oranges, # pears>, то его можно было бы интерпретировать как <1 apple, 2 oranges, 3 pears>. Если бы он представлял <X position, Y position, Z position>, то приведенное выше могло бы означать <1 in the X axis, 2 in the Y axiz, 3 in the Z axis> (евклидов вектор). Таким образом, векторы могут представлять координаты в произвольных размерах и используются для хранения информации в векторной графике.

person Joe    schedule 09.12.2009
comment
А как насчет stl::vector в C++? Он работает так же, как массив, и по своей конструкции не указывает данные о положении. Я также слышал, что массивы называют векторами и наоборот. - person sharkin; 09.12.2009
comment
Обратите внимание, что я фанат C++, но я бы сказал: никогда не полагайтесь на то, как C++ называет вещи ;-) В C++ std::vector — это просто массив, память для которого управляется автоматически. - person Carl Seleborg; 09.12.2009
comment
Я думаю, это просто семантика. std:vector имеет информацию о позиции (индекс); то же самое с массивом. Хотя эта позиционная информация может не иметь никакого значения в коде, для программиста она определенно имеет значение. - person Ron Warholic; 09.12.2009
comment
растровое изображение хранит данные в виде набора векторов, вы не поняли, что означает вектор в векторной графике. - person klochner; 09.12.2009
comment
@klochner: Нет, растровое изображение состоит из одного (одномерного) массива пикселей, где каждый сегмент массива представляет компоненты цвета в различном распределении порядка байтов и размера. - person sharkin; 09.12.2009
comment
@RA - я имел в виду, что каждый пиксель представляет собой векторную величину, определяющую значение RGB в этой точке, то есть вектор в цветовом пространстве. - person klochner; 09.12.2009

Я предполагаю, что это происходит от математического термина «вектор», который является геометрическим понятием. Когда вы работаете с математическими векторами, которые (теоретически) имеют значения в непрерывных областях, а не в дискретных пикселях, вы можете выполнять вычисления с произвольной точностью. В графическом приложении это означает, что вы можете сохранять точные положения точек независимо от коэффициента масштабирования, с которым вы отображаете свое изображение.

person Carl Seleborg    schedule 09.12.2009

Векторная графика отличается от «обычной» графики тем, что ее можно масштабировать без наложения. Это называется векторной графикой, потому что каждая линия или другой объект представлены вектором, а не обычной графикой «по пикселям».

person David Brunelle    schedule 09.12.2009