为什么三角形绕非垂直于三角形平面的轴旋转时会变形?

问题描述 投票:0回答:1

我正在编写一个小 vulkan 应用程序,我正在尝试测试三角形旋转。 这些是我的三角形的位置(左侧的 vec3)和颜色(右侧的 vec4):

obj.vertices = {
      {{-0.5, -0.5, 0.0}, {1.0, 0.0, 0.0, 1.0}},
      { {0.5, -0.5, 0.0}, {0.0, 1.0, 0.0, 1.0}},
      { {-0.5, 0.5, 0.0}, {0.0, 0.0, 1.0, 1.0}},
  };

另外,我的三角形的模型矩阵:

obj.model = glm::rotate(glm::mat4(1.0f), glm::radians(1.0f), glm::vec3(1,0,0));

每一帧,三角形都会像这样旋转:

void update(vc::renderer_t::object_t *o) {
  for (auto &v : o->vertices) {
    glm::vec4 nv(v.position.x, v.position.y, v.position.z, 1.0f);
    auto rt    = (o->model) * nv;
    v.position = {rt.x, rt.y, rt.z};
  }
}

我期望看到一个正常的旋转三角形,但三角形似乎被切成两部分,具体取决于它所处的角度。第一张照片中的蓝色部分应该附加在第四张照片中可见的三角形部分的底部,但发生的情况是前两张照片有点像 0 到 180 之间的三角形的关键帧,第三张和第四张照片大概是180到360。

我尝试绕 z 轴 [0,0,1] 旋转三角形,在该配置中,三角形按预期旋转。

我还收集了绕 x 轴 [1,0,0] 旋转时每帧(整个周期)第一个顶点的位置:

-0.5, -0.5, 0
-0.5, -0.499924, -0.0087262
-0.5, -0.499695, -0.0174497
-0.5, -0.499315, -0.026168
-0.5, -0.498782, -0.0348782
-0.5, -0.498097, -0.0435779
-0.5, -0.497261, -0.0522642
-0.5, -0.496273, -0.0609347
-0.5, -0.495134, -0.0695866
-0.5, -0.493844, -0.0782172
-0.5, -0.492404, -0.0868241
-0.5, -0.490814, -0.0954045
-0.5, -0.489074, -0.103956
-0.5, -0.487185, -0.112476
-0.5, -0.485148, -0.120961
-0.5, -0.482963, -0.12941
-0.5, -0.480631, -0.137819
-0.5, -0.478153, -0.146186
-0.5, -0.475528, -0.154509
-0.5, -0.47276, -0.162784
-0.5, -0.469847, -0.17101
-0.5, -0.46679, -0.179184
-0.5, -0.463592, -0.187303
-0.5, -0.460253, -0.195366
-0.5, -0.456773, -0.203368
-0.5, -0.453154, -0.211309
-0.5, -0.449397, -0.219186
-0.5, -0.445504, -0.226995
-0.5, -0.441474, -0.234736
-0.5, -0.43731, -0.242405
-0.5, -0.433013, -0.25
-0.5, -0.428584, -0.257519
-0.5, -0.424024, -0.26496
-0.5, -0.419336, -0.27232
-0.5, -0.414519, -0.279597
-0.5, -0.409576, -0.286788
-0.5, -0.404509, -0.293893
-0.5, -0.399318, -0.300908
-0.5, -0.394006, -0.307831
-0.5, -0.388573, -0.31466
-0.5, -0.383023, -0.321394
-0.5, -0.377355, -0.32803
-0.5, -0.371573, -0.334566
-0.5, -0.365677, -0.340999
-0.5, -0.35967, -0.347329
-0.5, -0.353554, -0.353554
-0.5, -0.347329, -0.35967
-0.5, -0.340999, -0.365677
-0.5, -0.334566, -0.371573
-0.5, -0.32803, -0.377355
-0.5, -0.321394, -0.383022
-0.5, -0.31466, -0.388573
-0.5, -0.307831, -0.394006
-0.5, -0.300908, -0.399318
-0.5, -0.293893, -0.404509
-0.5, -0.286788, -0.409576
-0.5, -0.279597, -0.414519
-0.5, -0.27232, -0.419336
-0.5, -0.26496, -0.424024
-0.5, -0.257519, -0.428584
-0.5, -0.25, -0.433013
-0.5, -0.242405, -0.43731
-0.5, -0.234736, -0.441474
-0.5, -0.226995, -0.445504
-0.5, -0.219186, -0.449397
-0.5, -0.211309, -0.453154
-0.5, -0.203369, -0.456773
-0.5, -0.195366, -0.460253
-0.5, -0.187304, -0.463592
-0.5, -0.179184, -0.466791
-0.5, -0.17101, -0.469847
-0.5, -0.162784, -0.47276
-0.5, -0.154509, -0.475529
-0.5, -0.146186, -0.478153
-0.5, -0.137819, -0.480631
-0.5, -0.12941, -0.482963
-0.5, -0.120961, -0.485148
-0.5, -0.112476, -0.487186
-0.5, -0.103956, -0.489074
-0.5, -0.0954047, -0.490814
-0.5, -0.0868242, -0.492404
-0.5, -0.0782174, -0.493845
-0.5, -0.0695867, -0.495135
-0.5, -0.0609348, -0.496274
-0.5, -0.0522643, -0.497261
-0.5, -0.043578, -0.498098
-0.5, -0.0348783, -0.498783
-0.5, -0.0261681, -0.499315
-0.5, -0.0174498, -0.499696
-0.5, -0.00872627, -0.499924
-0.5, -5.7742e-08, -0.500001
-0.5, 0.00872616, -0.499924
-0.5, 0.0174497, -0.499696
-0.5, 0.026168, -0.499315
-0.5, 0.0348782, -0.498783
-0.5, 0.0435779, -0.498098
-0.5, 0.0522642, -0.497262
-0.5, 0.0609347, -0.496274
-0.5, 0.0695866, -0.495135
-0.5, 0.0782173, -0.493845
-0.5, 0.0868241, -0.492405
-0.5, 0.0954046, -0.490814
-0.5, 0.103956, -0.489074
-0.5, 0.112476, -0.487186
-0.5, 0.120961, -0.485149
-0.5, 0.12941, -0.482964
-0.5, 0.137819, -0.480632
-0.5, 0.146186, -0.478153
-0.5, 0.154509, -0.475529
-0.5, 0.162784, -0.47276
-0.5, 0.17101, -0.469847
-0.5, 0.179184, -0.466791
-0.5, 0.187303, -0.463593
-0.5, 0.195366, -0.460253
-0.5, 0.203369, -0.456774
-0.5, 0.211309, -0.453155
-0.5, 0.219186, -0.449398
-0.5, 0.226996, -0.445504
-0.5, 0.234736, -0.441475
-0.5, 0.242405, -0.437311
-0.5, 0.25, -0.433013
-0.5, 0.257519, -0.428584
-0.5, 0.26496, -0.424025
-0.5, 0.27232, -0.419336
-0.5, 0.279597, -0.41452
-0.5, 0.286789, -0.409577
-0.5, 0.293893, -0.404509
-0.5, 0.300908, -0.399319
-0.5, 0.307831, -0.394006
-0.5, 0.314661, -0.388574
-0.5, 0.321394, -0.383023
-0.5, 0.32803, -0.377356
-0.5, 0.334566, -0.371573
-0.5, 0.341, -0.365678
-0.5, 0.34733, -0.359671
-0.5, 0.353554, -0.353554
-0.5, 0.35967, -0.34733
-0.5, 0.365677, -0.341
-0.5, 0.371573, -0.334566
-0.5, 0.377355, -0.32803
-0.5, 0.383023, -0.321395
-0.5, 0.388574, -0.314661
-0.5, 0.394006, -0.307831
-0.5, 0.399318, -0.300908
-0.5, 0.404509, -0.293893
-0.5, 0.409577, -0.286789
-0.5, 0.414519, -0.279597
-0.5, 0.419336, -0.27232
-0.5, 0.424025, -0.26496
-0.5, 0.428584, -0.25752
-0.5, 0.433013, -0.250001
-0.5, 0.437311, -0.242405
-0.5, 0.441475, -0.234736
-0.5, 0.445504, -0.226996
-0.5, 0.449398, -0.219186
-0.5, 0.453155, -0.21131
-0.5, 0.456774, -0.203369
-0.5, 0.460253, -0.195366
-0.5, 0.463593, -0.187304
-0.5, 0.466791, -0.179185
-0.5, 0.469847, -0.171011
-0.5, 0.47276, -0.162785
-0.5, 0.475529, -0.154509
-0.5, 0.478153, -0.146186
-0.5, 0.480632, -0.137819
-0.5, 0.482964, -0.12941
-0.5, 0.485149, -0.120961
-0.5, 0.487186, -0.112476
-0.5, 0.489075, -0.103956
-0.5, 0.490815, -0.0954049
-0.5, 0.492405, -0.0868245
-0.5, 0.493845, -0.0782176
-0.5, 0.495135, -0.0695869
-0.5, 0.496274, -0.060935
-0.5, 0.497262, -0.0522645
-0.5, 0.498099, -0.0435782
-0.5, 0.498783, -0.0348785
-0.5, 0.499316, -0.0261682
-0.5, 0.499697, -0.01745
-0.5, 0.499925, -0.00872641
-0.5, 0.500001, -1.84402e-07
-0.5, 0.499925, 0.00872604
-0.5, 0.499697, 0.0174496
-0.5, 0.499316, 0.0261679
-0.5, 0.498783, 0.0348781
-0.5, 0.498099, 0.0435778
-0.5, 0.497262, 0.0522642
-0.5, 0.496274, 0.0609346
-0.5, 0.495135, 0.0695865
-0.5, 0.493845, 0.0782173
-0.5, 0.492405, 0.0868241
-0.5, 0.490815, 0.0954046
-0.5, 0.489075, 0.103956
-0.5, 0.487186, 0.112476
-0.5, 0.485149, 0.120961
-0.5, 0.482964, 0.12941
-0.5, 0.480632, 0.137819
-0.5, 0.478154, 0.146186
-0.5, 0.47553, 0.154509
-0.5, 0.472761, 0.162784
-0.5, 0.469848, 0.17101
-0.5, 0.466792, 0.179184
-0.5, 0.463593, 0.187304
-0.5, 0.460254, 0.195366
-0.5, 0.456774, 0.203369
-0.5, 0.453155, 0.21131
-0.5, 0.449398, 0.219186
-0.5, 0.445505, 0.226996
-0.5, 0.441475, 0.234736
-0.5, 0.437311, 0.242405
-0.5, 0.433014, 0.250001
-0.5, 0.428585, 0.25752
-0.5, 0.424025, 0.26496
-0.5, 0.419337, 0.27232
-0.5, 0.41452, 0.279597
-0.5, 0.409577, 0.286789
-0.5, 0.40451, 0.293893
-0.5, 0.399319, 0.300908
-0.5, 0.394007, 0.307832
-0.5, 0.388574, 0.314661
-0.5, 0.383024, 0.321395
-0.5, 0.377356, 0.32803
-0.5, 0.371574, 0.334566
-0.5, 0.365678, 0.341
-0.5, 0.359671, 0.34733
-0.5, 0.353555, 0.353554
-0.5, 0.34733, 0.359671
-0.5, 0.341, 0.365678
-0.5, 0.334566, 0.371573
-0.5, 0.328031, 0.377356
-0.5, 0.321395, 0.383023
-0.5, 0.314661, 0.388574
-0.5, 0.307832, 0.394007
-0.5, 0.300909, 0.399319
-0.5, 0.293894, 0.40451
-0.5, 0.286789, 0.409577
-0.5, 0.279597, 0.41452
-0.5, 0.272321, 0.419337
-0.5, 0.264961, 0.424025
-0.5, 0.25752, 0.428585
-0.5, 0.250001, 0.433014
-0.5, 0.242406, 0.437311
-0.5, 0.234737, 0.441475
-0.5, 0.226996, 0.445505
-0.5, 0.219186, 0.449398
-0.5, 0.21131, 0.453155
-0.5, 0.203369, 0.456774
-0.5, 0.195366, 0.460254
-0.5, 0.187304, 0.463593
-0.5, 0.179185, 0.466792
-0.5, 0.171011, 0.469848
-0.5, 0.162785, 0.472761
-0.5, 0.154509, 0.47553
-0.5, 0.146186, 0.478154
-0.5, 0.137819, 0.480632
-0.5, 0.12941, 0.482965
-0.5, 0.120961, 0.48515
-0.5, 0.112476, 0.487187
-0.5, 0.103956, 0.489075
-0.5, 0.095405, 0.490815
-0.5, 0.0868245, 0.492406
-0.5, 0.0782176, 0.493846
-0.5, 0.0695869, 0.495136
-0.5, 0.060935, 0.496275
-0.5, 0.0522645, 0.497263
-0.5, 0.0435781, 0.498099
-0.5, 0.0348785, 0.498784
-0.5, 0.0261682, 0.499317
-0.5, 0.0174499, 0.499697
-0.5, 0.00872635, 0.499926
-0.5, 1.13621e-07, 0.500002
-0.5, -0.00872612, 0.499926
-0.5, -0.0174497, 0.499697
-0.5, -0.026168, 0.499317
-0.5, -0.0348783, 0.498784
-0.5, -0.0435779, 0.498099
-0.5, -0.0522643, 0.497263
-0.5, -0.0609348, 0.496275
-0.5, -0.0695867, 0.495136
-0.5, -0.0782174, 0.493846
-0.5, -0.0868243, 0.492406
-0.5, -0.0954047, 0.490815
-0.5, -0.103956, 0.489076
-0.5, -0.112476, 0.487187
-0.5, -0.120961, 0.48515
-0.5, -0.12941, 0.482965
-0.5, -0.137819, 0.480633
-0.5, -0.146186, 0.478154
-0.5, -0.154509, 0.47553
-0.5, -0.162785, 0.472761
-0.5, -0.171011, 0.469848
-0.5, -0.179185, 0.466792
-0.5, -0.187304, 0.463594
-0.5, -0.195366, 0.460254
-0.5, -0.203369, 0.456775
-0.5, -0.21131, 0.453156
-0.5, -0.219186, 0.449399
-0.5, -0.226996, 0.445505
-0.5, -0.234737, 0.441476
-0.5, -0.242406, 0.437312
-0.5, -0.250001, 0.433015
-0.5, -0.25752, 0.428585
-0.5, -0.264961, 0.424026
-0.5, -0.272321, 0.419337
-0.5, -0.279597, 0.414521
-0.5, -0.286789, 0.409578
-0.5, -0.293894, 0.40451
-0.5, -0.300909, 0.399319
-0.5, -0.307832, 0.394007
-0.5, -0.314661, 0.388575
-0.5, -0.321395, 0.383024
-0.5, -0.328031, 0.377356
-0.5, -0.334567, 0.371574
-0.5, -0.341001, 0.365678
-0.5, -0.347331, 0.359672
-0.5, -0.353555, 0.353555
-0.5, -0.359671, 0.347331
-0.5, -0.365678, 0.341001
-0.5, -0.371574, 0.334567
-0.5, -0.377356, 0.328031
-0.5, -0.383024, 0.321395
-0.5, -0.388575, 0.314662
-0.5, -0.394007, 0.307832
-0.5, -0.399319, 0.300909
-0.5, -0.40451, 0.293894
-0.5, -0.409578, 0.28679
-0.5, -0.414521, 0.279598
-0.5, -0.419337, 0.272321
-0.5, -0.424026, 0.264961
-0.5, -0.428585, 0.25752
-0.5, -0.433015, 0.250001
-0.5, -0.437312, 0.242406
-0.5, -0.441476, 0.234737
-0.5, -0.445505, 0.226996
-0.5, -0.449399, 0.219187
-0.5, -0.453156, 0.21131
-0.5, -0.456775, 0.203369
-0.5, -0.460254, 0.195367
-0.5, -0.463594, 0.187304
-0.5, -0.466792, 0.179185
-0.5, -0.469848, 0.171011
-0.5, -0.472761, 0.162785
-0.5, -0.47553, 0.154509
-0.5, -0.478154, 0.146187
-0.5, -0.480633, 0.137819
-0.5, -0.482965, 0.12941
-0.5, -0.48515, 0.120962
-0.5, -0.487187, 0.112476
-0.5, -0.489076, 0.103956
-0.5, -0.490816, 0.095405
-0.5, -0.492406, 0.0868246
-0.5, -0.493846, 0.0782177
-0.5, -0.495136, 0.069587
-0.5, -0.496275, 0.060935
-0.5, -0.497263, 0.0522646
-0.5, -0.4981, 0.0435782
-0.5, -0.498784, 0.0348785
-0.5, -0.499317, 0.0261682
-0.5, -0.499698, 0.0174499
-0.5, -0.499926, 0.00872634
-0.5, -0.500002, 9.22009e-08
-0.5, -0.499926, -0.00872615
-0.5, -0.499698, -0.0174497
-0.5, -0.499317, -0.026168
-0.5, -0.498784, -0.0348783
-0.5, -0.4981, -0.043578
-0.5, -0.497263, -0.0522644
-0.5, -0.496275, -0.0609349
-0.5, -0.495136, -0.0695868
-0.5, -0.493847, -0.0782175
-0.5, -0.492406, -0.0868244
-0.5, -0.490816, -0.0954049
-0.5, -0.489076, -0.103956
-0.5, -0.487187, -0.112476
-0.5, -0.48515, -0.120961
-0.5, -0.482965, -0.12941
-0.5, -0.480633, -0.137819
-0.5, -0.478155, -0.146186
-0.5, -0.475531, -0.154509
-0.5, -0.472762, -0.162785
-0.5, -0.469849, -0.171011
-0.5, -0.466793, -0.179185
-0.5, -0.463594, -0.187304
-0.5, -0.460255, -0.195366
-0.5, -0.456775, -0.203369
-0.5, -0.453156, -0.21131
-0.5, -0.449399, -0.219187
-0.5, -0.445506, -0.226996
-0.5, -0.441476, -0.234737
-0.5, -0.437312, -0.242406
-0.5, -0.433015, -0.250001
-0.5, -0.428586, -0.25752
-0.5, -0.424026, -0.264961

什么给予?为什么绕 z 轴以外的任何轴旋转都会出现问题?

c++ linear-algebra vulkan glm-math
1个回答
0
投票

必须设置:

深度夹启用=VK_TRUE;

在 VkPipelineRasterizationStateCreateInfo 中。

© www.soinside.com 2019 - 2024. All rights reserved.