質問編集履歴

2

追記

2021/05/25 15:32

投稿

XVK
XVK

スコア10

test CHANGED
File without changes
test CHANGED
@@ -53,3 +53,125 @@
53
53
  http://marupeke296.com/TIPS_No19_interpolation.html
54
54
 
55
55
  が参考になったのですが今回のお椀型?の仕様に合う情報が欲しいです
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+ ### 更に追記
66
+
67
+
68
+
69
+
70
+
71
+ 下記コードにて出力した点をプロットしたものが下記画像となります
72
+
73
+ a=0.1(緑)
74
+
75
+ a=0.25(赤)
76
+
77
+ a=0.4(水)
78
+
79
+
80
+
81
+
82
+
83
+ これが傾きの要件をみたしているのかはわからないのですが、これを線形補間で使えばもう十分かな感はあります
84
+
85
+ ただ、ソースのコメントにあるように分割時の右半分のYを求める係数がわからないため中央付近が異常に荒くなっています
86
+
87
+
88
+
89
+
90
+
91
+ ```ここに言語を入力
92
+
93
+ struct f2
94
+
95
+ {
96
+
97
+ float m_x;
98
+
99
+ float m_y;
100
+
101
+ };
102
+
103
+
104
+
105
+ f2 outf2[20];
106
+
107
+ int numout=0;
108
+
109
+
110
+
111
+ void saiki(int div, f2 v0, f2 v1, float a)
112
+
113
+ {
114
+
115
+ if(div){
116
+
117
+ float sax = v1.m_x - v0.m_x;//差x
118
+
119
+ float say = v1.m_y - v0.m_y;//差y
120
+
121
+ f2 center_vec;
122
+
123
+
124
+
125
+ center_vec.m_x = v0.m_x + sax*0.5f; //xは中間
126
+
127
+ center_vec.m_y = v0.m_y + say*(1.f-a); //yは1-aでブレンド
128
+
129
+
130
+
131
+ saiki(div-1, v0, center_vec, a);//左半分の再帰呼び出し
132
+
133
+ outf2[numout++] = center_vec;
134
+
135
+ //motomu(div-1, center_vec, v1, a);//右側分割が上手く行かない
136
+
137
+ }
138
+
139
+ else{
140
+
141
+ return;
142
+
143
+ }
144
+
145
+ }
146
+
147
+
148
+
149
+ void func()
150
+
151
+ {
152
+
153
+ float a = 0.25f;//掴んでいる点のx座標
154
+
155
+
156
+
157
+ f2 v0 = {0.f, 0.f};//原点
158
+
159
+ f2 v1 = {a, 1.f-a};//y=x上の点
160
+
161
+
162
+
163
+ saiki(5, v0, v1, a);
164
+
165
+ outf2[numout++] = v1;
166
+
167
+ //ここで出したoutf2は半分だけなのであとは手作業で鏡面写し
168
+
169
+ }
170
+
171
+
172
+
173
+ ```
174
+
175
+
176
+
177
+ ![イメージ説明](c51d4802ecc4f6fa31d0a2da7ccf16db.png)

1

追記

2021/05/25 15:32

投稿

XVK
XVK

スコア10

test CHANGED
File without changes
test CHANGED
@@ -33,3 +33,23 @@
33
33
 
34
34
 
35
35
  ![イメージ説明](3619293655cbf00e14379f178c3b3c14.png)
36
+
37
+
38
+
39
+ 追記です
40
+
41
+ 図では紫のグラフ(条件A)の点を掴んでいますが、これがy=xをまたぐ際に緑(条件B)の方に切り替えて使用します
42
+
43
+ またアニメーション用途のため、xは時間を表していて線形変化を緩急のある変化に変えるために使います
44
+
45
+ (例としてスケール初期値100%~終端200%として線形ではなくいきなり180%くらいまでデカくなったのちゆっくりに落ち着くといった動きなどを表現)
46
+
47
+ そのためyの範囲は0~1で収まるものを想定しています
48
+
49
+
50
+
51
+ S字型のカーブをさせるための情報は
52
+
53
+ http://marupeke296.com/TIPS_No19_interpolation.html
54
+
55
+ が参考になったのですが今回のお椀型?の仕様に合う情報が欲しいです