//寫(xiě)在前面
//局限性強(qiáng)黍图,輸入坐標(biāo)按照左上右上右下左下順序,未作判斷
//小坐標(biāo)系,固定插值描點(diǎn)命中率太低靶庙,所以斜線(xiàn)只支持45度角
//深化的話(huà) 放大坐標(biāo)系,描點(diǎn)用三角函數(shù)來(lái)計(jì)算娃属,有效擴(kuò)大描點(diǎn)的命中率
var printStr="";
var tArray = new Array();
//初始化六荒、重置坐標(biāo)系 1010
function InitStr(){
for(var k=0;k<10;k++){
tArray[k]=new Array();
for(var j=0;j<10;j++){
tArray[k][j]="0";
}
}
}
function Backstr() {
printStr="";
}
function Wrap() {
printStr+="\n";
}
function AddChar() {
printStr+="";
}
function AddSpace(){
printStr+=" ";
}
//描點(diǎn)畫(huà)線(xiàn) 四種算法,橫線(xiàn)矾端、豎線(xiàn)掏击、左傾45、右傾45
//坐標(biāo)系較小秩铆,不考慮其他角度
function line(x1,y1,x2,y2){
if(x1==x2){
for(var x=0;x<=y2-y1;x++){
tArray[y1+x][x1]=1;
}
}else if(y1==y2){
for(var x=0;x<=x2-x1;x++){
tArray[y1][x1+x]=1;
}
}else if(x1>x2&&y1<y2) {
for(var x=0;x<=x1-x2;x++){
tArray[y1+x][x1-x]=1;
}
}else{
for(var x=0;x<=x2-x1;x++){
tArray[y1+x][x1+x]=1;
}
}
}
//四邊形 三角形就是上邊兩個(gè)頂點(diǎn)重合
function FourB(x1,y1,x2,y2,x3,y3,x4,y4) {
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x4,y4,x3,y3);
line(x1,y1,x4,y4);
}
//拼接printStr字符串并展示
function Show() {
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if(tArray[i][j]==1){
AddChar();
}else{
AddSpace();
}
}
Wrap();
}
console.log(printStr);
}
//三角形
InitStr();
Backstr();
FourB(5,0,5,0,8,3,2,3);
Show();
//矩形
InitStr();
Backstr();
FourB(2,0,7,0,7,5,2,5);
Show();
//梯形
InitStr();
Backstr();
FourB(3,0,6,0,9,3,0,3);
Show();