回答編集履歴
1
ベジェが表示されない問題に対しての追記
test
CHANGED
@@ -13,3 +13,73 @@
|
|
13
13
|
ウィンドウ座標(x,y)と,3次元空間の座標は違うわけですが,そこらへんは大丈夫ですか?
|
14
14
|
|
15
15
|
試しに,ウィンドウの左上隅(x,y共に5以下になるような場所が良さそうかな)をクリックしてみたらどうなりますか?
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
[追記]
|
24
|
+
|
25
|
+
曲線が表示されないという件に関して,対応案を示します.
|
26
|
+
|
27
|
+
変更があるのはmouse()とinit()のみなので,そこだけを示します.
|
28
|
+
|
29
|
+
```
|
30
|
+
|
31
|
+
void mouse(int button, int state, int x, int y)
|
32
|
+
|
33
|
+
{
|
34
|
+
|
35
|
+
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
|
36
|
+
|
37
|
+
{
|
38
|
+
|
39
|
+
float a = 30, b = 5, c = (float)x / a - b, d = (float)y / a - b;
|
40
|
+
|
41
|
+
if (i < 4) {
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
//※ここの右辺が{}で囲まれていたが,コンパイル通らないので{}を除去した
|
46
|
+
|
47
|
+
ctrlpoints[i][0] = c;
|
48
|
+
|
49
|
+
ctrlpoints[i][1] = -d;
|
50
|
+
|
51
|
+
ctrlpoints[i][2] = 0.0;
|
52
|
+
|
53
|
+
printf("ctrlpoints[%d]:%lf %lf %lf\n", i, ctrlpoints[i][0], ctrlpoints[i][1], ctrlpoints[i][2]);
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
//ここの2行を追加した
|
58
|
+
|
59
|
+
glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, &ctrlpoints[0][0]);
|
60
|
+
|
61
|
+
glEnable(GL_MAP1_VERTEX_3);
|
62
|
+
|
63
|
+
}
|
64
|
+
|
65
|
+
printf("(%d, %d)で左ボタンが押されました\n", x, y);
|
66
|
+
|
67
|
+
i++;
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
glutPostRedisplay();
|
72
|
+
|
73
|
+
}
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
void init(void)
|
78
|
+
|
79
|
+
{//不要と思われるコードを除去した
|
80
|
+
|
81
|
+
glClearColor(0.0, 0.0, 0.0, 0.0);
|
82
|
+
|
83
|
+
}
|
84
|
+
|
85
|
+
```
|