C программная переменная, которая содержит декартовы координаты? - PullRequest
1 голос
/ 24 августа 2010

Я никогда не программировал на C и некоторое время не программировал на C ++, и в любом случае, я все еще учусь.

Я пишу программу на C и преобразовываю программу MATLAB в этот Cпрограмма.У меня есть много переменных из MATLAB, которые являются декартовыми координатами, XYZ, точек.Есть ли тип переменной, которую я мог бы использовать встроенный в C?Мне нужно вычесть разные точки, а также сделать другие операции над ними.Любые предложения?

Спасибо, DemiSheep


Редактировать:

Хорошо У меня есть еще один вопрос.Я хочу убедиться, что это хорошая идея.(Но сначала, с помощью stackoverflow, это то, как я должен опубликовать больше информации в своем сообщении, отредактировав свое исходное сообщение? - Спасибо!)

Вопрос:

У меня есть объект с несколькими характеристиками.Скажем, это машина, и у машины есть несколько разных параметров.

Параметры:

Положение на карте Высота над уровнем моря (уровень моря?) Начальная позиция Конечная позиция

Могу ли я использовать структуру или объединение (или оба?), Чтобы иметь все эти параметрывнутри "объекта" автомобиля и обновите параметры в объекте, как если бы это был его собственный класс, например C ++ или Java?

Например, если я хочу вычислить расстояние, пройденное автомобилем от начальной позиции доего текущее положение, как в декартовой плоскости, я мог бы сделать что-то вроде:

distantTraveled = car.position - car.startPosition

Спасибо, DemiSheep

Ответы [ 2 ]

6 голосов
/ 24 августа 2010

Нет встроенных типов, которые будут делать то, что вы хотите.

Возможно, вам придется создать свой собственный небольшой тип структуры, такой как следующий.

typedef struct {
  double x, y, z;
} coordinate;

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

Для чего бы я ни был, я настоятельно рекомендую поискать, чтобы найтибиблиотека, которая предоставит вам подобные вещи.В идеале что-то специализированное для домена, в котором вы работаете.

1 голос
/ 24 августа 2010

Вы бы использовали struct (typedef struct {double x,y,z;} point;) или массив (double p[3]).

Если вы хотите стать более умным, вы можете использовать оба , используяunion:

typedef union {
  struct {double x,y,z;} s;
  double a[3];
} point;

, но это происходит за счет более сложного синтаксиса доступа:

point p;
p.a[2] = 7;
p.s.x = 5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...