библиотеки кватерниона в [закрытом] C/C++

Вы можете использовать метод соединения GetSchema для получения информации о столбце. Я использую следующий код для вставки информации, которую мой собственный класс TableColumn здесь не показывает:

string[] restrictions = new string[] { null, null, tableName };

using (DataTable columns = conn.GetSchema("Columns", restrictions)) {
    int nameIndex = columns.Columns.IndexOf("COLUMN_NAME");
    int ordinalPosIndex = columns.Columns.IndexOf("ORDINAL_POSITION");
    int isNullableIndex = columns.Columns.IndexOf("IS_NULLABLE");
    int maxLengthIndex = columns.Columns.IndexOf("CHARACTER_MAXIMUM_LENGTH");
    int dataTypeIndex = columns.Columns.IndexOf("DATA_TYPE");
    int isPrimaryKeyIndex = columns.Columns.IndexOf("PRIMARY_KEY");
    int hasDefaultIndex = columns.Columns.IndexOf("COLUMN_HASDEFAULT");
    int defaultValueIndex = columns.Columns.IndexOf("COLUMN_DEFAULT");

    foreach (DataRow row in columns.Rows) {
        var col = new TableColumn {
            ColumnName = (string)row[nameIndex]
        };
        try {
            col.ColumnNameForMapping = prepareColumnNameForMapping(col.ColumnName);
        } catch (Exception ex) {
            throw new UnimatrixExecutionException("Error in delegate 'prepareColumnNameForMapping'", ex);
        }
        col.ColumnOrdinalPosition = (int)row[ordinalPosIndex];
        col.ColumnAllowsDBNull = (bool)row[isNullableIndex];
        col.ColumnMaxLength = (int)row[maxLengthIndex];

        string explicitDataType = ((string)row[dataTypeIndex]).ToLowerInvariant();
        col.ColumnDbType = GetColumnDbType(explicitDataType);
        col.ColumnIsPrimaryKey = (bool)row[isPrimaryKeyIndex];
        col.ColumnIsIdentity = explicitDataType == "integer" && col.ColumnIsPrimaryKey;
        col.ColumnIsReadOnly = col.ColumnIsIdentity;

        if ((bool)row[hasDefaultIndex]) {
            col.ColumnDefaultValue = GetDefaultValue(col.ColumnDbType, (string)row[defaultValueIndex]);
            if (col.ColumnDefaultValue == null) { // Default value could not be determined. Probably expression.
                col.AutoAction = ColumnAction.RetrieveAfterInsert;
            }
        }
        tableSchema.ColumnSchema.Add(col);
    }
}

Вы можете значительно упростить этот код, если вам нужны только имена столбцов.

25
задан Jav_Rock 28 May 2012 в 08:21
поделиться

7 ответов

Я болею за кватернионный класс Иррлихта. Он имеет лицензию zlib и его довольно легко извлечь из Irrlicht:

9
ответ дан Jeff M 28 November 2019 в 21:04
поделиться

Для документации относительно кватернионов проверьте 3D графические учебники. Они - просто матрицы, которые производят эффект 3D вращения с помощью умножения вместо в вычислительном отношении дорогой тригонометрии.

3
ответ дан Sam 28 November 2019 в 21:04
поделиться

DirectX имеет свое собственное кватернионные функции также как и несколько других 3D библиотек.

, По-моему, лучший способ изучить, как работа кватернионов должна пахать через математику самостоятельно. Страница Wikipedia на кватернионы и преобразование содержит все формулы, в которых Вы нуждаетесь. Я записал свою собственную библиотеку кватерниона из этого :) (Это находится в Haskell, таким образом, я не потружусь отправлять его.)

4
ответ дан ephemient 28 November 2019 в 21:04
поделиться

Существует графен , представляющий собой простую библиотеку C / GObject с SIMD-оптимизацией для различных векторных, матричных, кватернионных и т. Д. Вычислений, которые распространены в трехмерной графике.

2
ответ дан robswain 28 November 2019 в 21:04
поделиться

There's Eigen, a templated library of math and geometry stuff used in Blender and by KDE programs, which has a slick Quaternion class defined in a single .h file.

Info at http://eigen.tuxfamily.org/index.php?title=Main_Page and http://www.ohloh.net/p/5393

9
ответ дан 28 November 2019 в 21:04
поделиться

Если вы решите применить свой собственный код или действительно хотите понять математику, лежащую в основе кода (полезно для отладки), я настоятельно рекомендую сайт Мартина Бейкера . Это выглядит примитивно, но объяснения подробны и просты для понимания, и он также предоставляет местами код.

7
ответ дан 28 November 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: