package circle;
public class pro {
int[] polx=new int[36];
int[] poly=new int[36];
int[][] group=new int[500][500];
int[][] subgroup=new int[500][500];
int cx,cy,len;
int w,h;
int mx,nx;
int th;
int[] trianglex=new int[4];
int[] triangley=new int[4];
int avx,avy;
public static void main(String[] args) {
pro test=new pro();
}
pro(){
w=500;
h=500;
for(mx=150;mx<400;mx++){
for(nx=120;nx<350;nx++){
group[mx][nx]=100;
}
}
polygon sub=new polygon();
sub.w=w;
sub.h=h;
sub.group=group;
sub.makedata(200,200);
polx=sub.polx;
poly=sub.poly;
int ch,th1;
avx=0;
avy=0;
for(th=0;th<36;th++){
avx=avx+polx[th];
avy=avy+poly[th];
}
avx=avx/36;
avy=avy/36;
for(th=0;th<36;th++){
trianglex[1]=polx[th];
triangley[1]=poly[th];
th1=th+1;
if(th1>35)th1=0;
trianglex[2]=polx[th1];
triangley[2]=poly[th1];
trianglex[3]=avx;
triangley[3]=avy;
triangle sub4=new triangle();
sub4.trianglex=trianglex;
sub4.triangley=triangley;
for(mx=0;mx<h;mx++){
for(nx=0;nx<w;nx++){
ch=sub4.makedata(mx,nx);
if(ch>50)subgroup[mx][nx]=100;
}
}
}
graph sub2=new graph();
sub2.subgroup=subgroup;
sub2.makedata();
}
}
package circle;
public class triangle {
double[][] a=new double[2][2];
double[][] b=new double[2][1];
double[] sol=new double[2];
int[] trianglex=new int[4];
int[] triangley=new int[4];
int makedata(int mx,int nx){
a[0][0]=trianglex[1]-trianglex[3];
a[0][1]=trianglex[2]-trianglex[3];
a[1][0]=triangley[1]-triangley[3];
a[1][1]=triangley[2]-triangley[3];
b[0][0]= nx-trianglex[3];
b[1][0]= mx-triangley[3];
matrix sub=new matrix();
sub.a=a;
sub.b=b;
sub.makedata();
sol=sub.sol;
int z,ch;
z=0;
if(sol[0]>1)z=100;
if(sol[1]>1)z=100;
if(sol[0]<0)z=100;
if(sol[1]<0)z=100;
if(sol[0]+sol[1]>1)z=100;
if(sol[0]+sol[1]<0)z=100;
ch=0;
if(z<60)ch=100;
return ch;
}
}
package circle;
public class polygon{
int th;
double[] cirx=new double[36];
double[] ciry=new double[36];
int[] polx=new int[36];
int[] poly=new int[36];
int[][] group=new int[500][500];
int cx,cy,len;
int mx,nx;
int w,h;
void makedata(int cy1,int cx1){
circle();
cx=cx1;
cy=cy1;
polygon();
}
void polygon(){
int x1,y1;
int len,z,ch;
for(th=0;th<36;th++){
ch=0;
polx[th]=cx;
poly[th]=cy;
for(len=1;len<500;len++){
x1=cx+(int)(len*cirx[th]);
y1=cy+(int)(len*ciry[th]);
if(x1>w-1)x1=w-1;
if(x1<0)x1=0;
if(y1>h-1)y1=h-1;
if(y1<0)y1=w-1;
z=0;
if(group[y1][x1]>50)z=z+1;
if(ch<50)z=z+1;
if(z<2)ch=100;
if(z==2)polx[th]=x1;
if(z==2)poly[th]=y1;
}
}
}
void circle(){
double pi;
double c;
int th1;
pi=3.1415;
for(th=0;th<19;th++){
c=Math.sin(th*pi/18);
ciry[th]=c;
c=Math.cos(th*pi/18);
cirx[th]=c;
}
for(th=19;th<36;th++){
th1=th-18;
c=Math.sin(th1*pi/18);
ciry[th]=-c;
c=Math.cos(th1*pi/18);
cirx[th]=-c;
}
}
}
package circle;
import Jama.*;
public class matrix{
double[][] a=new double[2][2];
double[][] b=new double[2][1];
double[] sol=new double[2];
void makedata(){
Matrix M =new Matrix(a);
Matrix Mb =new Matrix(b);
Matrix z=M.solve(Mb);
sol[1]=z.get(1,0);
sol[0]=z.get(0,0);
}
}
最終更新:2013年11月10日 06:52