Overview
| Comment: | Make GCC happy again |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
d377e8819e533f35ba7dc3f5068ee5a9 |
| User & Date: | js on 2023-02-19 17:40:53 |
| Other Links: | manifest | tags |
Context
|
2023-03-18
| ||
| 22:43 | OFZIPArchive: Only use data descriptor if needed (check-in: 89a51dab69 user: js tags: trunk) | |
|
2023-02-19
| ||
| 17:40 | Make GCC happy again (check-in: d377e8819e user: js tags: trunk) | |
| 13:37 | OFMatrix4x4: Use 2D arrays in row-major format (check-in: 975a812f36 user: js tags: trunk) | |
Changes
Modified src/OFMatrix4x4.h from [817b6aa381] to [c303f1010a].
| ︙ | ︙ | |||
31 32 33 34 35 36 37 | #endif /** * @brief A 2D array of the 4x4 floats of the matrix in row-major format. * * These may be modified directly. */ | | | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #endif /** * @brief A 2D array of the 4x4 floats of the matrix in row-major format. * * These may be modified directly. */ @property (readonly, nonatomic) float (*values)[4]; /** * @brief Returns the 4x4 identity matrix. */ + (OFMatrix4x4 *)identityMatrix; /** |
| ︙ | ︙ |
Modified src/OFMatrix4x4.m from [37363ee709] to [77a89afbe5].
| ︙ | ︙ | |||
43 44 45 46 47 48 49 | self = [super init]; memcpy(_values, values, sizeof(_values)); return self; } | | | | > | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
self = [super init];
memcpy(_values, values, sizeof(_values));
return self;
}
- (float (*)[4])values
{
return _values;
}
- (instancetype)copy
{
return [[OFMatrix4x4 alloc]
initWithValues: (const float (*)[4])_values];
}
- (bool)isEqual: (OFMatrix4x4 *)matrix
{
if (![matrix isKindOfClass: [OFMatrix4x4 class]])
return false;
|
| ︙ | ︙ | |||
123 124 125 126 127 128 129 |
left[3][2] * right[2][3] + left[3][3] * right[3][3];
#undef left
}
- (void)translateWithVector: (OFVector3D)vector
{
OFMatrix4x4 *translation = [[OFMatrix4x4 alloc] initWithValues:
| | | | 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
left[3][2] * right[2][3] + left[3][3] * right[3][3];
#undef left
}
- (void)translateWithVector: (OFVector3D)vector
{
OFMatrix4x4 *translation = [[OFMatrix4x4 alloc] initWithValues:
(const float [4][4]){
{ 1, 0, 0, vector.x },
{ 0, 1, 0, vector.y },
{ 0, 0, 1, vector.z },
{ 0, 0, 0, 1 }
}];
[self multiplyWithMatrix: translation];
[translation release];
}
- (void)scaleWithVector: (OFVector3D)vector
{
OFMatrix4x4 *scale = [[OFMatrix4x4 alloc] initWithValues:
(const float [4][4]){
{ vector.x, 0, 0, 0 },
{ 0, vector.y, 0, 0 },
{ 0, 0, vector.z, 0 },
{ 0, 0, 0, 1 }
}];
[self multiplyWithMatrix: scale];
[scale release];
|
| ︙ | ︙ |
Modified tests/OFMatrix4x4Tests.m from [e27fadae34] to [ceb4a0e078].
| ︙ | ︙ | |||
23 24 25 26 27 28 29 |
- (void)matrix4x4Tests
{
void *pool = objc_autoreleasePoolPush();
OFMatrix4x4 *matrix, *matrix2;
OFVector4D point;
TEST(@"+[identityMatrix]",
| | | | | | > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
- (void)matrix4x4Tests
{
void *pool = objc_autoreleasePoolPush();
OFMatrix4x4 *matrix, *matrix2;
OFVector4D point;
TEST(@"+[identityMatrix]",
memcmp([[OFMatrix4x4 identityMatrix] values], (const float [4][4]){
{ 1, 0, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 1, 0 },
{ 0, 0, 0, 1 }
}, 16 * sizeof(float)) == 0)
TEST(@"+[matrixWithValues:]",
(matrix = [OFMatrix4x4 matrixWithValues: (const float [4][4]){
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 }
}]))
TEST(@"-[description]",
[matrix.description isEqual: @"<OFMatrix4x4: {\n"
@"\t1 2 3 4\n"
@"\t5 6 7 8\n"
@"\t9 10 11 12\n"
@"\t13 14 15 16\n"
@"}>"])
TEST(@"-[isEqual:]", [[OFMatrix4x4 identityMatrix] isEqual:
[OFMatrix4x4 matrixWithValues: (const float [4][4]){
{ 1, 0, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 1, 0 },
{ 0, 0, 0, 1 }
}]])
TEST(@"-[copy]", (matrix2 = [matrix copy]) && [matrix2 isEqual: matrix])
TEST(@"-[multiplyWithMatrix:] #1",
R([matrix2 multiplyWithMatrix: [OFMatrix4x4 identityMatrix]]) &&
[matrix2 isEqual: matrix])
matrix2 = [OFMatrix4x4 matrixWithValues: (const float [4][4]){
{ 100, 200, 300, 400 },
{ 500, 600, 700, 800 },
{ 900, 1000, 1100, 1200 },
{ 1300, 1400, 1500, 1600 }
}];
TEST(@"-[multiplyWithMatrix:] #2",
R([matrix2 multiplyWithMatrix: matrix]) &&
[matrix2 isEqual:
[OFMatrix4x4 matrixWithValues: (const float [4][4]){
{ 9000, 10000, 11000, 12000 },
{ 20200, 22800, 25400, 28000 },
{ 31400, 35600, 39800, 44000 },
{ 42600, 48400, 54200, 60000 }
}]])
TEST(@"[-translateWithVector:]",
|
| ︙ | ︙ |