図のようにrectを描画したい
前提
添付している図のように、直線が枠内を通る正方形のみ描画するプログラムを書きたいです。今書いてるのだと斜め方向に描画されることもありますが、横一文字みたいに描画されてしまうこともあります。
該当のソースコード
Processing
1//正方形の接触判定 2int wNum = (int)random(20,30); 3int hNum = (int)random(40,60); 4float m = wNum/hNum; 5int boxSize = 10; 6 7size(800,800); 8translate(width/2,height/2); 9rectMode(CENTER); 10 11 12for(int rx=0; rx<wNum; rx++){ 13 for(int ry=0; ry<hNum; ry++){ 14 int x = rx*boxSize; 15 int y = -ry*boxSize; 16 float d = abs(m*x+y)/sqrt(m*m+1);//点と直線の距離公式 17 if (d <= boxSize/2*sqrt(2)) { 18 rect(x, y, boxSize, boxSize); 19 } 20 } 21}
試したこと
接触判定というか、枠内を直線が通るかどうかを点と直線のきょりを用いて調べていますがこれがあっているかがそもそも不安です。何かいい方法あれば教えてください。
補足情報(FW/ツールのバージョンなど)
Processing4.3
直線が枠内を通らないのに塗られているマスがありますが、間違いないでしょうか。
右上隅から数えて、左に3、下に3のマスと、左に5、下に6のマスです。
あと、ご提示の図からすると、やりたいことはこちらの質問に近いように思います。
https://teratail.com/questions/149396
