湖濱散記部落格的樹心幽徑[login][主頁]
365:20170710Snowflake with Triangle initiator

http://lfwiki.kmvs.km.edu.tw/lf/gallery/70/TriSnowFlake0710.JPG

alt

//g++  `Magick++-config --cxxflags --cppflags` -I/usr/local/include/ImageMagick-7  segb.c `Magick++-config --ldflags --libs`  -L/usr/local/zlib/lib -lz

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <Magick++.h>
using namespace Magick;
void drawSide(int L,int ox,int oy, int fx ,int fy,double rad,Image *pim){
//O--M--W--N--F
int mx,my,nx,ny,wx,wy;
pim->strokeColor("red");
int w=pow((fy-oy)*(fy-oy)+(fx-ox)*(fx-ox),0.5);
int dx=w*cos(rad);
int dy=-w*sin(rad);
mx=ox+dx/3;
my=oy+dy/3;
pim->draw(DrawableLine(ox,oy,mx,my));
int w2=w/3;
int dx2=w2*cos(rad+M_PI/3);
int dy2=-w2*sin(rad+M_PI/3);
wx=mx+dx2;
wy=my+dy2;
pim->strokeColor("green");
pim->draw(DrawableLine(mx,my,wx,wy));
nx=ox+2*dx/3;
ny=oy+2*dy/3;
pim->draw(DrawableLine(wx,wy,nx,ny));
pim->strokeColor("blue");
pim->draw(DrawableLine(nx,ny,fx,fy));
pim->strokeColor("white");
pim->draw(DrawableArc((mx+nx+wx)/3-w2/4,(my+ny+wy)/3-w2/4,(mx+nx+wx)/3+w2/4,(my+ny+wy)/3+w2/4,0,360));

if (L>0) {
    drawSide(L-1,ox,oy,mx,my,rad,pim);
    drawSide(L-1,mx,my,wx,wy,rad+M_PI/3,pim);
    drawSide(L-1,wx,wy,nx,ny,rad-M_PI/3,pim);
    drawSide(L-1,nx,ny,fx,fy,rad,pim);
}
}
void drawTriLine(int L,int ox,int oy, int w, int h,Image *pim){
int gx,gy,fx,fy;
pim->strokeColor("red");
fx=ox+w*cos(M_PI/3);
fy=oy-w*sin(M_PI/3);
gx=ox+w;
gy=oy;
printf("O(%d,%d) w=%d,h=%d\n",ox,oy,w,h);
printf("1:(%d,%d)-(%d,%d)\n",ox,oy,fx,fy);
pim->draw(DrawableLine(ox,oy,fx,fy));
printf("2:(%d,%d)-(%d,%d)\n",fx,fy,gx,gy);
pim->draw(DrawableLine(fx,fy,gx,gy));
printf("3:(%d,%d)-(%d,%d)\n",gx,gy,ox,oy);
pim->draw(DrawableLine(gx,gy,ox,oy));
 
drawSide(4,ox,oy,fx,fy,M_PI/3,pim);
drawSide(4,fx,fy,gx,gy,-M_PI/3,pim);
drawSide(4,gx,gy,ox,oy,-M_PI,pim);
pim->draw(DrawableArc((ox+fx+gx)/3-w/4,(oy+fy+gy)/3-w/4,(ox+fx+gx)/3+w/4,(oy+fy+gy)/3+w/4,0,360));

}

void drawTri(int L,int ox,int oy, int w, int h,Image *pim){
int ax,ay;
pim->strokeColor("white");
pim->draw(DrawableLine(ox+0,oy+h-1,ox+w,oy+h-1));
pim->draw(DrawableLine(ox+0,oy+h-1,ox+w*sin(M_PI/6),oy+h-1-w*cos(M_PI/6)));
pim->draw(DrawableLine(ox+w,oy+h-1,ox+w*sin(M_PI/6),oy+h-1-w*cos(M_PI/6)));
if(L>0){
    ax=ox+3*w/6; ay=oy+h-1-w*cos(M_PI/6)/3-w/3;
    drawTri(L-1,ax,ay,w/3,w/3,pim);
    ax=ox+w/6; ay=oy+h-1-w*cos(M_PI/6)*1/3-w/3;
    drawTri(L-1,ax,ay,w/3,w/3,pim);
    ax=ox+w/3; ay=oy+h-1-w*cos(M_PI/6)*2/3-w/3;
    drawTri(L-1,ax,ay,w/3,w/3,pim);
    ax=ox+0*w/3; ay=oy+h-1-w/3;
    drawTri(L-1,ax,ay,w/3,w/3,pim);
    ax=ox+1*w/3; ay=oy+h-1-w/3;
    drawTri(L-1,ax,ay,w/3,w/3,pim);
    ax=ox+2*w/3; ay=oy+h-1-w/3;
    drawTri(L-1,ax,ay,w/3,w/3,pim);
}
}

int main()
{
int w=3*7*5*10;
int h=3*7*5*14;
Image im( Geometry(w, h), Color("black"));
im.draw(DrawableStrokeColor(Color("black")));
im.strokeWidth(2);
drawTriLine(3,0,w,w,w,&im);
im.write("TriSnowFlake-1.jpg");
}


select id,article_id,topic,text from lt_articles_text where article_id =365; ok. update lt_articles set num_reads=num_reads +1 where id=365; ok.