ronronさん、こんにちは。
VEX初心者というよりはプログラミング初心者だと思われるので、1つアドバイスさせて頂くと、プログラミングにおいては問題の切り分けがとても重要です。
今回問題にされているのは、VEXやプログラミングに関するものではなく、計算つまり算数の理解の問題です。
「 dをfで割る➡dから小数点を排除する➡dとfを掛ける 」
なので、この計算を単純化して考えてみましょう。
まず、この計算でやりたいことは、
例えばdが0,1,2,3,4,5,6,7,8,9,10...という連続する値でfを3とすると、
0,0,0,3,3,3,6,6,6,9,9....という値に変換したい訳です。
手順を追って説明すると、
1. dをf(3)で割るとdは
0, 0.3333.., 0.6666.., 1, 1.3333.., 1.666.., 2.., 2.333.., 2.666, 3, 3.333.., ....
2. 小数点を排除するとdは
0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3 ....
3. これにf(3)を掛けるとdは
0, 0, 0, 3, 3, 3, 6, 6, 6, 9, 9 ..
となります。
なので、このコードだと@P.y(高さ)の値(d)がfの倍数に近似されるので結果、2番目の画像のように階段状になるわけです。
数式で何をやっているのか理解しづらいようでしたら、プログラムを始める前に、Demos(
https://www.desmos.com/calculator [
www.desmos.com] )などを使って数式をビジュアル化すると理解の手助けになるかと思います。
因みにこのコードは下記ように書き換えることもできます。
d = (int)(d / f)* f;
理解の手助けになれば幸いです。