|
Namazu for hns による簡易全文検索 詳しくは 詳細指定/ヘルプを参照して下さい |
||||||||||||||||||||||||||||||||||||||||||||||
2024年01月27日(土) 旧暦 [n年日記] [更新:"2004/08/09 23:43:33"]#1 [openscad] revenge kind of fails (SignWaveHill.scad)![]()
// SignWave shaped hill
Xamp = 50; // one wave length
Yamp = 50; // one wave length
Zamp = 20; // amplitude (height)
Xcount = 10;
Ycount = 200;
pitchX = Xamp/Xcount;
pitchY = Yamp/Ycount;
delta = pitchX;
X2 = Xamp/2;
Y2 = Yamp/2;
D2 = delta/2;
// ---------------------------------------------------------------------
module two_by_two ( amp, seqX, x_angle_pitch, pitchY, D2, x, y, Zamp, PitchX )
{
z = amp * cos((seqX ) * x_angle_pitch - 180);
g = amp * cos((seqX + 1 ) * x_angle_pitch - 180);
hull() {
translate([x , y, Zamp]){ cube([delta, delta, z + Zamp + 0.1]); }
translate([x + delta, y, Zamp]){ cube([delta, delta, g + Zamp + 0.1]); }
}
}
// ---------------------------------------------------------------------
module SignWaveHill(Xamp, Yamp, Zamp, delta) {
pitchX = Xamp / Xcount;
y_angle_pitch = 360/Ycount;
x_angle_pitch = 360/Xcount;
for ( seqY = [0:pitchY/2:Ycount - 1] ){
amp = Zamp * cos(seqY * y_angle_pitch - 180);
for ( seqX = [0:0.5:Xcount - 1] ){
x = (seqX ) * pitchX ;
y = (seqY ) * pitchY - Y2;
two_by_two ( amp, seqX, x_angle_pitch, pitchX, D2, x, y, Zamp, pitchY );
y = (seqY + 0.5 )* pitchY - Y2;
# two_by_two ( amp, seqX, x_angle_pitch, pitchX, D2, x, y, Zamp, pitchY );
}
}
}
SignWaveHill(Xamp, Yamp, Zamp, pitchX);
( Post message... )
|
最近の日記 2024年11月14日 ・DWL66+ 2018 405 nm 2024年02月19日 ・another (large, 0.55 x 1.0 m/m) version for contrast curve 2024年02月15日 ・curved star cone 2024年02月13日 ・paraboloid with base plane 2024年02月09日 ・bit map format for contrast curve | ||