(function(){var a,b,c,d,cmt='テスト';if ( window.location.search ){var p = window.location.search.substr(1).split(String.fromCharCode(0x26));var q = new Object();for (var i=0; p.length-i!=0; i++) {var r = p[i].split('=');q[r[0]] = parseInt(r[1]);}a = q['a'];b = q['b'];c = q['c'];d = q['d'];} else {switch ( Math.floor(Math.random()*81) ) {case 0:a = b = c = d = 45;break;case 1: case 2:a = d = Math.floor(Math.random()*7)*10+10;b = c = 90-a;break;case 3: case 4: case 5: case 6: case 7: case 8:b = c = Math.floor(Math.random()*8)*10+10;a = d = Math.floor(Math.random()*(170-2*b)/10)*10+10;break;case 9: case 10: case 11: case 12: case 13: case 14:a = d = Math.floor(Math.random()*8)*10+10;b = Math.floor(Math.random()*(160-a-d)/10)*10+10;c = 180-a-b-d;break;case 15: case 16:a = b = Math.floor(Math.random()*8)*10+10;c = d = 90-b;break;case 17: case 18: case 19:b = Math.floor(Math.random()*8)*10+10;c = 90-b;a = d = b;break;case 20: case 21: case 22:b = Math.floor(Math.random()*8)*10+10;c = 90-b;a = d = c;break;case 23: case 24: case 25:b = Math.floor(Math.random()*8)*10+10;c = 90-b;a = b;d = Math.floor(Math.random()*(80-c)/10)*10+10;break;case 26: case 27: case 28:b = Math.floor(Math.random()*8)*10+10;c = 90-b;d = c;a = Math.floor(Math.random()*(80-b)/10)*10+10;break;case 29: a = 15,b = 30,c = 105,d = 30; break;case 30: a = 30,b = 105,c = 30,d = 15; break;case 31: a = 105,b = 30,c = 15,d = 30; break;case 32: a = 30,b = 15,c = 30,d = 105; break;case 33: a=10,b=10,c=30,d=110; break;case 34: a=10,b=10,c=40,d=110; break;case 35: a=10,b=20,c=40,d=40; break;case 36: a=10,b=20,c=50,d=50; break;case 37: a=10,b=20,c=80,d=50; break;case 38: a=10,b=20,c=100,d=40; break;case 39: a=10,b=30,c=70,d=30; break;case 40: a=10,b=30,c=80,d=30; break;case 41: a=20,b=10,c=20,d=120; break;case 42: a=20,b=10,c=40,d=120; break;case 43: a=20,b=20,c=30,d=50; break;case 44: a=20,b=20,c=100,d=50; break;case 45: a=30,b=10,c=20,d=130; break;case 46: a=30,b=10,c=30,d=130; break;case 47: a=30,b=20,c=30,d=70; break;case 48: a=30,b=20,c=80,d=70; break;case 49: a=30,b=70,c=30,d=10; break;case 50: a=30,b=80,c=30,d=10; break;case 51: a=40,b=30,c=40,d=60; break;case 52: a=40,b=30,c=80,d=60; break;case 53: a=40,b=40,c=20,d=10; break;case 54: a=40,b=100,c=20,d=10; break;case 55: a=50,b=30,c=20,d=20; break;case 56: a=50,b=30,c=40,d=70; break;case 57: a=50,b=30,c=70,d=70; break;case 58: a=50,b=50,c=20,d=10; break;case 59: a=50,b=80,c=20,d=10; break;case 60: a=50,b=100,c=20,d=20; break;case 61: a=60,b=20,c=30,d=100; break;case 62: a=60,b=20,c=50,d=100; break;case 63: a=60,b=40,c=30,d=40; break;case 64: a=60,b=80,c=30,d=40; break;case 65: a=70,b=30,c=20,d=30; break;case 66: a=70,b=40,c=30,d=50; break;case 67: a=70,b=70,c=30,d=50; break;case 68: a=70,b=80,c=20,d=30; break;case 69: a=80,b=20,c=30,d=110; break;case 70: a=80,b=20,c=40,d=110; break;case 71: a=100,b=30,c=20,d=60; break;case 72: a=100,b=50,c=20,d=60; break;case 73: a=110,b=30,c=10,d=10; break;case 74: a=110,b=30,c=20,d=80; break;case 75: a=110,b=40,c=10,d=10; break;case 76: a=110,b=40,c=20,d=80; break;case 77: a=120,b=20,c=10,d=20; break;case 78: a=120,b=40,c=10,d=20; break;case 79: a=130,b=20,c=10,d=30; break;case 80: a=130,b=30,c=10,d=30; break;}}var e = Math.tan(c/180.0*Math.PI)/(Math.tan((a+b)/180.0*Math.PI)+Math.tan(c/180.0*Math.PI));var f = Math.tan(b/180.0*Math.PI)/(Math.tan((d+c)/180.0*Math.PI)+Math.tan(b/180.0*Math.PI));var g = e*Math.tan((a+b)/180.0*Math.PI);var h = f*Math.tan((d+c)/180.0*Math.PI);var x;var t=1;var cvs = document.getElementById('cvs');var ctx = cvs.getContext('2d');ctx.beginPath();ctx.clearRect(0,0,400,400);ctx.closePath();if ( Math.min(a+b+c,180)==180 || Math.min(b+c+d,180)==180 ){cmt = '図形を描けません';document.getElementById('inner').innerHTML = cmt;return;} else {var w = 1;if ( Math.max(e,0)==0 ){if ( Math.max(f,1-e)==f ) w = f;else w += -e;}if ( Math.max(f,0)==0 ){if ( Math.max(e,1-f)==e ) w = e;else w += -f;}var z = 300/Math.max(Math.max(h,g),w);var px, qx, rx, sx;if ( w==1 ){px = 200-(z*w/2);qx = 200+(z*w/2);} else if ( w==e || w==1-f ){px = 200-(z*w/2);qx = px+z;} else if ( w==f || w==1-e ){qx = 200+(z*w/2);px = qx-z;} else if ( w==1-e-f ){px = 200-(z*w/2)-z*e;qx = 200+(z*w/2)+z*f;}rx = qx - z*f;sx = px + z*e;var py = 400-((400-z*Math.max(h,g))/2);var qy = 400-((400-z*Math.max(h,g))/2);var ry = 400-((400-z*Math.max(h,g))/2)-z*h;var sy = 400-((400-z*Math.max(h,g))/2)-z*g;var col;eval('col = document.defaultView.getComputedS'+'tyle(document.getElementById(\'inner\'),\'\').color;');eval('ctx.strokeS'+'tyle = col;');eval('ctx.fillS'+'tyle = col');var fs,ff;eval('fs = document.defaultView.getComputedS'+'tyle(document.getElementById(\'inner\'),\'\').fontSize;');eval('ff = document.defaultView.getComputedS'+'tyle(document.getElementById(\'inner\'),\'\').fontFamily;');ctx.font = fs+' '+ff;ctx.textAlign = 'center';ctx.textBaseline = 'middle';if ( a==d ) {var tx=qx-(px+qx)/2.0;var ty=tx/Math.tan(Math.PI*(180.0-a-b-c)/180.0);var tr=Math.sqrt(tx*tx+ty*ty);ctx.beginPath();ctx.arc(qx-tx,qy-ty,tr,0,2*Math.PI,false);ctx.closePath();ctx.lineWidth = 2.0;ctx.stroke();ctx.fillText('A',qx-tx-(qx-tx-sx)*(tr+12)/tr,qy-ty-(qy-ty-sy)*(tr+12)/tr);ctx.fillText('B',qx-tx-(qx-tx-px)*(tr+12)/tr,qy-ty-(qy-ty-py)*(tr+12)/tr);ctx.fillText('C',qx-tx-(qx-tx-qx)*(tr+12)/tr,qy-ty-(qy-ty-qy)*(tr+12)/tr);ctx.fillText('D',qx-tx-(qx-tx-rx)*(tr+12)/tr,qy-ty-(qy-ty-ry)*(tr+12)/tr);ctx.lineJoin = 'bevel';} else {ctx.fillText('A',sx-12,sy-12);ctx.fillText('B',px-12,py+12);ctx.fillText('C',qx+12,qy+12);ctx.fillText('D',rx+12,ry-12);ctx.lineJoin = 'miter';}ctx.beginPath();ctx.moveTo(px,py);ctx.lineTo(qx,qy);ctx.lineTo(rx,ry);ctx.lineTo(sx,sy);ctx.closePath();ctx.lineWidth = 2.0;ctx.stroke();ctx.beginPath();ctx.lineJoin = 'bevel';ctx.moveTo(px,py);ctx.lineTo(rx,ry);ctx.lineWidth = 2.0;ctx.stroke();ctx.beginPath();ctx.lineJoin = 'bevel';ctx.moveTo(qx,qy);ctx.lineTo(sx,sy);ctx.lineWidth = 2.0;ctx.stroke();}cmt = 'α=∠ABD='+a+'˚
β=∠DBC='+b+'˚
γ=∠ACB='+c+'˚
δ=∠DCA='+d+'˚
θ=∠ADBを求めよ。
';if ( (a==45)*(b==45)*(c==45)*(d==45) ) {cmt += 'α=β=γ=δ=45˚より、□ABCDは正方形。
∴θ=45˚
';cmt += '正方形であることが解らなくても、α=δ より、円周角の定理より□ABCDは円に内接する。
∴θ=γ=45˚';} else if ( (a==d)*(b==c)*(a+b==90) ) {cmt += 'α=δ かつ β=γ かつ α+β=γ+δ=90˚ より、□ABCDは長方形。
∴θ=β=γ='+b+'˚
';cmt += '長方形であることが解らなくても、α=δ より、円周角の定理より□ABCDは円に内接する。
∴θ=γ='+c+'˚';} else if ( (a==d)*(b==c) ) {cmt += 'α=δ かつ β=γ かつ α+β=γ+δ≠90˚ より、□ABCDはAD//BCの等脚台形。
∴θ=β=γ='+b+'˚
';cmt += '等脚台形であることが解らなくても、α=δ より、円周角の定理より□ABCDは円に内接する。
∴θ=γ='+c+'˚';} else if ( (a==d)*(a+b+c+d==180) ) {cmt += 'α+β+γ+δ=180˚ より、□ABCDはAB//DCの台形。
α=δ より、□ABCDは円に内接する台形、すなわち等脚台形。
∴θ=γ='+c+'˚
';cmt += '等脚台形であることが解らなくても、α=δ より、円周角の定理より□ABCDは円に内接する。
∴θ=γ='+c+'˚'} else if ( (a+d==90)*(a==b)*(c==d) ) {cmt += 'α+δ=90˚ かつ α=β かつ γ=δ より、□ABCDは菱形。
∴θ=α=β='+a+'˚';} else if ( (b+c==90)*(a==b)*(a==d) ) {cmt += 'β+γ=90˚ かつ α=β より、□ABCDは直線BDで線対称な凧形。
∴θ=90˚-δ='+(90-d)+'˚
';cmt += '凧形であることが解らなくても、α=δ より、円周角の定理より□ABCDは円に内接する。
∴θ=γ='+c+'˚';} else if ( (b+c==90)*(c==d)*(a==d) ) {cmt += 'β+γ=90˚ かつ γ=δ より、□ABCDは直線ACで線対称な凧形。
∴θ=α='+a+'˚
';cmt += '凧形であることが解らなくても、α=δ より、円周角の定理より□ABCDは円に内接する。
∴θ=γ='+c+'˚';} else if ( (b+c==90)*(a==b) ) {cmt += 'β+γ=90˚ かつ α=β より、□ABCDは直線BDで線対称な凧形。
∴θ=90˚-δ='+(90-d)+'˚';} else if ( (b+c==90)*(c==d) ) {cmt += 'β+γ=90˚ かつ γ=δ より、□ABCDは直線ACで線対称な凧形。
∴θ=α='+a+'˚';} else if ( a==d ) {cmt += 'α=δ より、円周角の定理より□ABCDは円に内接する。
∴θ=γ='+c+'˚';} else if ( (a==15)*(b==30)*(c==105)*(d==30) ){cmt += 'α+β+γ+δ=180˚より、AB//DC
';cmt += '仮に、△ABCの高さを1として、底辺の長さを求めると、
cot(α+β)+cot(γ)=cot(45˚)+cot(105˚)=cot(45˚)-cot(75˚)
cot(45˚)=1、cot(75˚)=2-√(3)より、-1+√(3)
';cmt += '同様に、△DBCの高さを1として、底辺の長さを求めると、
cot(β)+cot(γ+δ)=cot(30˚)+cot(135˚)=cot(30˚)-cot(45˚)
cot(30˚)=√(3)、cot(45˚)=1より、-1+√(3)
';cmt += 'よってAD//BCより、□ABCDは平行四辺形。
∴θ=β='+b+'˚';} else if ( (a==30)*(b==105)*(c==30)*(d==15) ){cmt += 'α+β+γ+δ=180˚より、AB//DC
';cmt += '仮に、△ABCの高さを1として、底辺の長さを求めると、
cot(α+β)+cot(γ)=cot(135˚)+cot(30˚)=-cot(45˚)+cot(30˚)
cot(45˚)=1、cot(30˚)=√(3)より、-1+√(3)
';cmt += '同様に、△DBCの高さを1として、底辺の長さを求めると、
cot(β)+cot(γ+δ)=cot(105˚)+cot(45˚)=-cot(75˚)+cot(45˚)
cot(75˚)=2-√(3)、cot(45˚)=1より、-1+√(3)
';cmt += 'よってAD//BCより、□ABCDは平行四辺形。
∴θ=β='+b+'˚';} else if ( (a==105)*(b==30)*(c==15)*(d==30) ){cmt += 'α+β+γ+δ=180˚より、AB//DC
';cmt += '仮に、△ABCの高さを1として、底辺の長さを求めると、
cot(α+β)+cot(γ)=cot(135˚)+cot(15˚)=-cot(45˚)+cot(15˚)
cot(45˚)=1、cot(15˚)=2+√(3)より、1+√(3)
';cmt += '同様に、△DBCの底辺の高さを1として、底辺の長さを求めると、
cot(β)+cot(γ+δ)=cot(30˚)+cot(45˚)
cot(30˚)=√(3)、cot(45˚)=1より、1+√(3)
';cmt += 'よってAD//BCより、□ABCDは平行四辺形。
∴θ=β='+b+'˚';} else if ( (a==30)*(b==15)*(c==30)*(d==105) ){cmt += 'α+β+γ+δ=180˚より、AB//DC
';cmt += '仮に、△ABCの高さを1として、底辺の長さを求めると、
cot(α+β)+cot(γ)=cot(45˚)+cot(30˚)
cot(45˚)=1、cot(30˚)=√(3)より、1+√(3)
';cmt += '同様に、△DBCの高さを1として、底辺の長さを求めると、
cot(β)+cot(γ+δ)=cot(15˚)+cot(135˚)=cot(15˚)-cot(45˚)
cot(15˚)=2+√(3)、cot(45˚)=1より、1+√(3)
';cmt += 'よってAD//BCより、□ABCDは平行四辺形。
∴θ=β='+b+'˚';} else if ( (1/Math.tan((a+b)/180.0*Math.PI)+1/Math.tan(c/180.0*Math.PI)).toFixed(10)==(1/Math.tan(b/180.0*Math.PI)+1/Math.tan((c+d)/180.0*Math.PI)).toFixed(10) ){cmt += '仮に、△ABCの高さを1として、底辺の長さを求めると、
cot(α+β)+cot(γ)=cot('+(a+b)+'˚)+cot('+c+'˚)
';cmt += '同様に、△DBCの高さを1として、底辺の長さを求めると、
cot(β)+cot(γ+δ)=cot('+b+'˚)+cot('+(c+d)+'˚)
';cmt += 'それぞれ底辺の長さが等しく、
□ABCDはAD//BCの台形。
';cmt += '∴θ=β='+b+'˚';}document.getElementById('inner').innerHTML = cmt;})();
正しいパラメータを渡すとここに解説が表示されます。