# 第20回目
参考サイト
https://daeudaeu.com/programming-sankaku/#:~:text=%E4%B8%8A%E3%81%AE%E5%9B%B3%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E9%9D%92%E3%81%A7%E8%89%B2%E3%82%92%E3%81%A4%E3%81%91%E3%81%9F%E9%83%A8%E5%88%86%E3%81%AF%E7%9B%B4%E8%A7%92%E4%B8%89%E8%A7%92%E5%BD%A2%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%AE%E3%81%A7%E3%80%81%20%E4%B8%89%E8%A7%92%E9%96%A2%E6%95%B0%E3%81%AE%E4%BE%BF%E5%88%A9%E3%81%AA%E3%81%A8%E3%81%93%E3%82%8D%20%E3%81%A7%E3%82%82%E7%B4%B9%E4%BB%8B%E3%81%97%E3%81%9F%E4%B8%8B%E8%A8%98%E3%81%AE%E8%A8%88%E7%AE%97%E5%BC%8F%E3%81%AB%E3%82%88%E3%82%8A%20x%20%E5%BA%A7%E6%A8%99%E3%81%A8%20y%20%E5%BA%A7%E6%A8%99%E3%82%92%E6%B1%82%E3%82%81%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E5%87%BA%E6%9D%A5%E3%81%BE%E3%81%99%E3%80%82%20x,r%20%2A%20cos%CE%B8%20y%20%3D%20r%20%2A%20sin%CE%B8
前回やったこと
座標を指定して移動する(cu-bricksの方まで完成)
今回の目標
進みたい距離の座標を入力して進む
## sample.jsへの実装
```
let a,b;
let angle;
let cubeX;
let cubeY;
cube.on('id:position-id', data => {
angle = data.angle;
cubeX = data.x;
cubeY = data.y;
})
let zx,zy,theata;
function keypress_ivent(e){
if(e.code === 'Enter'){
theata = angle;
zx = cubeX;
zy = cubeY;
console.log('スタート_X座標',zx);
console.log('スタート_Y座標',zy);
console.log('theata',theata);
a = r.value * Math.sin(theata * (Math.PI / 180));
b = r.value * Math.cos(theata * (Math.PI / 180));
zx = zx + b;
zy = zy + a;
console.log('ゴール_ZX座標',zx);
console.log('ゴール_ZY座標',zy);
Convert16from10();
cube.motorCharacteristic.characteristic.write(
Buffer.from([0x03, //制御の種類
0x02, //制御識別値
0xff, //タイムアウト時間
0x02, //移動タイプ
0x50, //モーターの最大速度指示値
0x00, //モーターの速度変化タイプ
0x00, //Reserved
x1, x2, //目標地点の X 座標値
y1, y2, //目標地点の Y 座標値
0x00, 0xA0]), //目標地点でのキューブの角度θ
false);
}
}
```
現在の座標と向いてる角度を取得し、三角関数を用いてゴールの座標の値を計算する。その後、上位8ビット下位8ビットの変換の関数(18回目参照)を読み込む。最後にゴールの座標を代入し、移動を開始する。
## Cu-bricksへの実装
cubricks-toio.js

interpreter.js

Elm.main

index.html

実際の所、実行できるが思い通りに動かない。
今ある問題点として、実行した際にcube.on("position-id", data)が上手く実行されず
angleやcubeX,cubeYなどの値がNaNになってしまう。
おそらくcube.on("position-id", data)を取得するのに時間がかかってしまい、先に変数代入が行われてしまうため、
今回の問題が発生したと思っている。
position-idの抽出がもう少し上手く行えればできるかもしれない。
来週はそこの完成を目指したい。