ファイル:Lemoine Hexagon.svg
ページのコンテンツが他言語でサポートされていません。
表示
この SVG ファイルのこの PNG プレビューのサイズ: 600 × 600 ピクセル. その他の解像度: 240 × 240 ピクセル | 480 × 480 ピクセル | 768 × 768 ピクセル | 1,024 × 1,024 ピクセル | 2,048 × 2,048 ピクセル。
元のファイル (SVG ファイル、800 × 800 ピクセル、ファイルサイズ: 2キロバイト)
ウィキメディア・コモンズのファイルページにある説明を、以下に表示します。
|
概要
解説Lemoine Hexagon.svg |
English: Lemoine Hexagon and its construction |
日付 | |
原典 | 投稿者自身による著作物 |
作者 | Claudio Rocchini |
Source Code
#include <stdio.h>
#include <math.h>
class point
{
public:
double x,y;
point() {}
point( double nx, double ny ) : x(nx),y(ny) {}
point operator+ ( const point & p ) const { return point(x+p.x,y+p.y); }
point operator- ( const point & p ) const { return point(x-p.x,y-p.y); }
point operator* ( const double s ) const { return point(x*s,y*s); }
double operator* ( const point & p ) const { return x*p.x+p.y*y; } // dot product
double operator^ ( const point & p ) const { return x*p.y-p.x*y; } // cross product
double angle() const { return atan2(y,x); }
point& at_angle( double a ) { x = cos(a); y = sin(a); return *this; }
point perp() const { return point(y,-x); }
double norm () const { return sqrt(x*x+y*y); }
point& normalize() { double n = norm(); if(n!=0) { x/=n; y/=n; } return *this; }
};
class line
{
public:
point orig;
point dire;
line() {}
line( const point & no, const point & nd ) : orig(no),dire(nd) {}
point param( double t ) const { return orig+dire*t; }
point intersect( const line & l ) { return param( (l.dire^(orig-l.orig))/(dire^l.dire) ); }
};
void main()
{
const double SX = 800; const double SY = 800;
const double S = 700; const double Q = 75;
const int N = 3;
int i;
point tri[N] = { point(80,50) ,point(680,750), point(165,715) };
line median [N];
line bisector [N];
line symmedian[N];
point inter[N][2];
for(i=0;i<N;++i) {
median[i].orig = tri[i];
median[i].dire = ((tri[(i+1)%N]+tri[(i+2)%N])*0.5 - tri[i]).normalize();
bisector[i].orig = tri[i];
bisector[i].dire = (tri[(i+1)%N]-tri[i]).normalize() + (tri[(i+2)%N]-tri[i]).normalize();
bisector[i].dire.normalize();
symmedian[i].orig = tri[i];
symmedian[i].dire.at_angle( bisector[i].dire.angle()*2 - median[i].dire.angle() );
}
point symmedian_p = symmedian[0].intersect(symmedian[1]);
for(i=0;i<N;++i) {
line pa(symmedian_p, (tri[(i+2)%N]-tri[(i+1)%N]).normalize() );
for(int j=0;j<2;++j) {
line la(tri[i], (tri[(i+1+j)%N]-tri[i]).normalize() );
inter[i][j] = pa.intersect(la);
}
}
line l1( (inter[0][0]+inter[0][1])*0.5, (inter[0][0]-inter[0][1]).perp().normalize() );
line l2( (inter[1][0]+inter[1][1])*0.5, (inter[1][0]-inter[1][1]).perp().normalize() );
point first_lem_c = l1.intersect(l2);
double first_lem_r = (first_lem_c-inter[0][0]).norm();
FILE * fp = fopen("c:\\temp\\Lemoine_Hexagon.svg","w");
fprintf(fp,
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
"<svg\n"
"xmlns:svg=\"http://www.w3.org/2000/svg\"\n"
"xmlns=\"http://www.w3.org/2000/svg\"\n"
"version=\"1.0\"\n"
"width=\"%g\"\n"
"height=\"%g\"\n"
"id=\"Lemoine_Hexagon\">\n"
,SX,SY
);
fprintf(fp,"<g style=\"stroke:#0000C0;stroke-width:1;stroke-opacity:1;stroke-dasharray:6,4;fill:none\">\n");
for(i=0;i<N;++i)
fprintf(fp,
"<line x1=\"%5.1lf\" y1=\"%5.1lf\" x2=\"%5.1lf\" y2=\"%5.1lf\"/>\n"
,median[i].orig.x,median[i].orig.y
,(median[i].orig+median[i].dire*S).x,(median[i].orig+median[i].dire*S).y
);
fprintf(fp,"</g>\n");
fprintf(fp,"<g style=\"stroke:#00C000;stroke-width:1;stroke-opacity:1;stroke-dasharray:6,4;fill:none\">\n");
for(i=0;i<N;++i)
fprintf(fp,
"<line x1=\"%5.1lf\" y1=\"%5.1lf\" x2=\"%5.1lf\" y2=\"%5.1lf\"/>\n"
,bisector[i].orig.x,bisector[i].orig.y
,(bisector[i].orig+bisector[i].dire*S).x,(bisector[i].orig+bisector[i].dire*S).y
);
fprintf(fp,"</g>\n");
fprintf(fp,"<g style=\"stroke:#C00000;stroke-width:1;stroke-opacity:1;stroke-dasharray:6,4;fill:none\">\n");
for(i=0;i<N;++i)
fprintf(fp,
"<line x1=\"%5.1lf\" y1=\"%5.1lf\" x2=\"%5.1lf\" y2=\"%5.1lf\"/>\n"
,symmedian[i].orig.x,symmedian[i].orig.y
,(symmedian[i].orig+symmedian[i].dire*S).x,(symmedian[i].orig+symmedian[i].dire*S).y
);
fprintf(fp,"</g>\n");
fprintf(fp,"<g style=\"stroke:#C0C0C0;stroke-width:1;stroke-opacity:1;stroke-dasharray:6,4;fill:none\">\n");
for(i=0;i<N;++i) {
point d = (inter[i][1] - inter[i][0]).normalize();
point p1 = inter[i][0] - d*Q; point p2 = inter[i][1] + d*Q;
fprintf(fp,
"<line x1=\"%5.1lf\" y1=\"%5.1lf\" x2=\"%5.1lf\" y2=\"%5.1lf\"/>\n"
,p1.x, p1.y, p2.x, p2.y
);
}
fprintf(fp,"</g>\n");
fprintf(fp,"<g style=\"stroke:#00C0C0;stroke-width:1;stroke-opacity:1;fill:none\">\n");
fprintf(fp,"<circle cx=\"%5.1lf\" cy=\"%5.1lf\" r=\"%5.1lf\"/>\n"
,first_lem_c.x, first_lem_c.y
,first_lem_r
);
fprintf(fp,"</g>\n");
fprintf(fp,"<g style=\"stroke:#C000C0;stroke-width:2;stroke-opacity:1;fill:none\">\n");
fprintf(fp,"<path d=\"");
for(i=0;i<3;++i){
if(i==0) fprintf(fp,"M ");
else fprintf(fp,"L ");
fprintf(fp,"%5.1lf,%5.1lf ",tri[i].x,tri[i].y);
}
fprintf(fp,"z\"/>\n");
fprintf(fp,"</g>\n");
fprintf(fp,"<g style=\"stroke:#000000;stroke-width:2;stroke-opacity:1;fill:#C0C000;fill-opacity:0.5\">\n");
fprintf(fp,"<path d=\"");
for(i=0;i<3;++i) {
for(int j=0;j<2;++j) {
if(i==0 && j==0) fprintf(fp,"M ");
else fprintf(fp,"L ");
fprintf(fp,"%5.1lf,%5.1lf ",inter[i][j]);
}
}
fprintf(fp,"z\"/>\n");
fprintf(fp,"</g>\n");
fprintf(fp,"<g style=\"stroke:none;fill:#000000\">\n");
fprintf(fp,"<circle cx=\"%5.1lf\" cy=\"%5.1lf\" r=\"%5.1lf\"/>\n"
,symmedian_p.x, symmedian_p.y
,6.0
);
for(i=0;i<N;++i) for(int j=0;j<2;++j)
fprintf(fp,"<circle cx=\"%5.1lf\" cy=\"%5.1lf\" r=\"%5.1lf\"/>\n"
,inter[i][j].x, inter[i][j].y
,6.0
);
fprintf(fp,"</g>\n");
fprintf(fp,"</svg>\n");
fclose(fp);
}
ライセンス
この作品の著作権者であるClaudio Rocchiniは、この作品を以下のライセンスで提供しています。
この文書は、フリーソフトウェア財団発行のGNUフリー文書利用許諾書 (GNU Free Documentation License) 1.2またはそれ以降のバージョンの規約に基づき、複製や再配布、改変が許可されます。不可変更部分、表紙、背表紙はありません。このライセンスの複製は、GNUフリー文書利用許諾書という章に含まれています。http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
このファイルはクリエイティブ・コモンズ 表示 3.0 非移植ライセンスのもとに利用を許諾されています。
帰属: Claudio Rocchini
- あなたは以下の条件に従う場合に限り、自由に
- 共有 – 本作品を複製、頒布、展示、実演できます。
- 再構成 – 二次的著作物を作成できます。
- あなたの従うべき条件は以下の通りです。
- 表示 – あなたは適切なクレジットを表示し、ライセンスへのリンクを提供し、変更があったらその旨を示さなければなりません。これらは合理的であればどのような方法で行っても構いませんが、許諾者があなたやあなたの利用行為を支持していると示唆するような方法は除きます。
あなたは上記のライセンスから、どれか一つ以上を選択できます。
このファイルに描写されている項目
題材
ウィキデータ項目がない値
9 7 2008
ファイルの履歴
過去の版のファイルを表示するには、その版の日時をクリックしてください。
日付と時刻 | サムネイル | 寸法 | 利用者 | コメント | |
---|---|---|---|---|---|
現在の版 | 2008年7月9日 (水) 08:32 | 800 × 800 (2キロバイト) | Rocchini | {{Information |Description={{en|1=Lemoine Hexagon and its construction}} |Source=Opera creata dall'uploader (own work by uploader) |Author=Claudio Rocchini |Date=2008-07-09 |Permission= |other_versions= }} {{ImageUpload|full}} |
ファイルの使用状況
以下のページがこのファイルを使用しています:
グローバルなファイル使用状況
以下に挙げる他のウィキがこの画像を使っています:
- en.wikipedia.org での使用状況
- en.wiktionary.org での使用状況
- fr.wikipedia.org での使用状況
- ru.wikipedia.org での使用状況