ロボットの描画です。
各角度を入力した後、『描画』をクリックしてください。ロボットの手足が動きます。
まず、↓のURLをクリックしてください。
var infangle = ["△", "30", "0", "△", "0", "0", "△", "30", "0", "△", "0", "0"];
var inix = 0;
var inerrsw = 0;
var displayarea = "";
function join_calculate2(){
infangle[1] = document.myFORM.uder1.value;
infangle[2] = document.myFORM.uder2.value;
infangle[4] = document.myFORM.asir1.value;
infangle[5] = document.myFORM.asir2.value;
infangle[7] = document.myFORM.udel1.value;
infangle[8] = document.myFORM.udel2.value;
infangle[10] = document.myFORM.asil1.value;
infangle[11] = document.myFORM.asil2.value;
inerrsw = 0;
for(inix = 0; inix<12 ;inix++){
num_check();
}
// element = document.getElementById("idresult");
// displayarea = displayarea + " err=" + inerrsw;
// element.innerHTML = displayarea;
if(inerrsw === 0) {
for(inix = 0; inix<12 ;inix++){
join_rcalculation();
}
robotdraw();
}
document.myFORM.uder1.value = infangle[1];
document.myFORM.uder2.value = infangle[2];
document.myFORM.asir1.value = infangle[4];
document.myFORM.asir2.value = infangle[5];
document.myFORM.udel1.value = infangle[7];
document.myFORM.udel2.value = infangle[8];
document.myFORM.asil1.value = infangle[10];
document.myFORM.asil2.value = infangle[11];
}
function num_check(){
if(isNaN(infangle[inix]) === false){
if((parseInt(infangle[inix]) >= 0) && (parseInt(infangle[inix]) < 360)) {
jointbl[inix].fangle = parseInt(infangle[inix]);
} else{
infangle[inix] = "0";
inerrsw = 1;
}
} else{
if(infangle[inix] !== "△"){
infangle[inix] = "0";
inerrsw = 1;
}
}
}
function join_rcalculation(){
// 前の接合点からの描画角度
if(infangle[inix] !== "△") {
dr = jointbl[inix].fangle;
// 左側の接合点の場合、角度を360度回転させる。
if((jointbl[inix].kinds.substr(1,1) === "2") || (jointbl[inix].kinds.substr(1,1) === "4")){
dr = 360 - dr;
if(dr >= 360) dr = dr - 360;
}
sx = 0; sy = 0;
//中点xの値の頭が”S”であると前にある種別が同一の座標を参照して計算する。
//リアル座標xの算出
//一つ前のテーブルの種別が中点xの値と同じならリアル座標xをsxに入れる。
//以外は0を編集する。
if(jointbl[inix-1].kinds === jointbl[inix].midpointx){
sx = jointbl[inix-1].realadx;
} else {
sx = 0;
}
//cos(コサイン)でx座標を求める。(前の角度+90)ラジアンに直す(パイ/180を乗算する)
if(dr === 0){
jointbl[inix].realadx = sx;
} else {
jointbl[inix].realadx = parseInt(jointbl[inix].flength*Math.cos((dr+90)*Math.PI/180))+sx;
}
// element = document.getElementById("idresult");
// displayarea = displayarea + " rx=" + jointbl[inix].realadx;
// element.innerHTML = displayarea;
//中点yの値の頭が”S”であると前にある種別が同一の座標を参照して計算する。
//リアル座標yの算出
//一つ前のテーブルの種別が中点yの値と同じならリアル座標yをsyに入れる。
//以外は0を編集する。
if(jointbl[inix-1].kinds === jointbl[inix].midpointy){
sy = jointbl[inix-1].realady;
} else {
sy = 0;
}
if(dr === 0){
jointbl[inix].realady = jointbl[inix].flength + sy;
} else {
//sin(サイン)でy座標を求める。(前の角度+90)ラジアンに直す(パイ/180を乗算する)
jointbl[inix].realady = parseInt(jointbl[inix].flength*Math.sin((dr+90)*Math.PI/180))+sy;
}
}
}