У меня есть пространственная (т. Е. 3D) карта, которую я планирую генерировать. Общая карта разбита на следующие термины и размеры:Как представить комплексный вектор?
ПРИМЕЧАНИЕ: Hektum - это составленное слово вместо использования квадранта, поскольку квадрант обозначает четверти. Hektum, в данном случае, обозначает 16ths.
Вселенной (128 х 128 х 128 области)
область (16 х 16 х 16 секторов)
сектор (4 х 4 х 4 Hektums)
Hektum (64.0 х 64,0 х 64,0 векторы)
Vector3 (с плавающей точкой (х), поплавок (г), поплавок (у))
Моя проблема заключается в определении типа, который представляет собой spatial_vector
- конкретно, когда дело доходит до Vector3(float, float, float)
. Скажем, я хочу представить местоположение, при этом Vector3
не имеет смысла. Полное местоположение включает в себя что-то вроде следующего:
spatial_loc = SpatialVector(`1976984.2197.44.0.4532.36.001.17.9027`)
, где части, разделенные периодами являются:
область (х: 24, г: 85, у: 120) = 1976984
сектор (х: 5, г: 9, у: 8) = 2197
Hektum (х: 0, г: 3, у: 2) = 44
... , то все, что следует:
вектор (х: 0,4532, z: 36,001, y: 17,9027) = ???
Проблема действительно два раза (но я хорошо ж/сосредоточив внимание на # 1 и в зависимости от ответов просим пользовательскую CTYPE помощи другого вопрос):
- Как я могу представлять 4-я часть вектора, так как в нем есть поплавки? Остальные части (x, z, y) преобразуются в линейные значения.
- Стоит ли писать собственный
ctype
, так что это можно рассматривать как значение? В некотором смысле было бы разумно сделать это в математических целях.
В идеале, как часть # 2, подняты следующие вопросы:
- Я прочитал документацию Python на написание новых типов. Однако каковы шаги для этого? то есть с использованием другой IDE (Intelli-J для примера) и способа компиляции и т. д.
Значение типа (
struct
) может быть присвоено какv = 3
. Возможно ли иметь аналогичное назначение с пользовательским значением ctype?Например:spatial_loc =
1976984.2197.44.0.4532.36.001.17.9027
Опять же, проблема # 1 мой главный вопрос: как я могу представить в простом формате с Vector3(float, float, float)
.
Поплавки являются плохим выбором для вашего приложения, они не равномерно расположены в декартовом пространстве. Гораздо лучше использовать 3 x 32-битные целочисленные значения. Это имеет дополнительное преимущество в том, чтобы более аккуратно устанавливать вашу существующую схему. На самом деле, почему бы вам просто не использовать 64-битные целые числа - биты 0-6 - это Вселенная, 7-10 - Region, 11-12 - Hektum, что-то вроде этого. –
@HighPerformanceMark: Я просто думал о bitarray и маскирующих битах, как вы предлагаете. Как насчет использования Decimal (...) вместо float? «Равномерно разнесенная» проблема довольно незначительна в отношении такой обширной территории, не так ли? – IAbstract
@HighPerformanceMark: можете ли вы расширить свои проблемы с неравномерным интервалом поплавков в декартовом пространстве? Это из-за точности? Я слышал, что numpy - это инструмент для поплавков, но у меня возникают проблемы с его установкой в моей системе Windows. – IAbstract