|
Namazu for hns による簡易全文検索 詳しくは 詳細指定/ヘルプを参照して下さい |
||||||||||||||||||||||||||||||||||||||||||||||
2024年01月26日(金) 旧暦 [n年日記] [更新:"2004/08/09 23:43:33"]#1 [openscad] SignWaveHill![]() SignWaveHill-unit.stl Download
// SignWave shaped hill
Xamp = 50; // one wave length
Yamp = 50; // one wave length
Zamp = 20; // amplitude (height)
delta = 0.5; // ste
cycle = 1; // count of waveform
module SignWaveHill(Xamp, Yamp, Zamp, cycle, delta) {
X2 = Xamp/2;
Y2 = Yamp/2;
for ( x = [-X2:delta:X2] ){
for (y = [-Y2:delta:Y2] ){
amp = Zamp * cos(cycle/2 * (y / Y2) * 360.0);
hull(){
z = amp * cos(cycle/2 * (x / X2) * 360.0);
translate([x, y, Zamp]){
cube([delta, delta, z + Zamp ]);
}
g = amp * cos(cycle/2 * ((x - delta) / X2) * 360.0);
translate([x - delta, y, Zamp]){
cube([delta, delta, g + Zamp]);
}
}
}
}
}
// uncomment gives 3 x 3 cycles
// for (x = [-1:1:1] ){
// for (y = [-1:1:1] ){
// translate([ x * width * 2, y * length * 2, 0])
SignWaveHill(Xamp, Yamp, Zamp, cycle, delta);
// }
// }
( Post message... )
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年01月29日(月) 旧暦 [n年日記] [更新:"2024/01/29 07:51:45"]#1 [openscad] hull() does not work yet STL model
// SignWave shaped hill
// ---------------------------------------------------------------------
module SignWaveHill (Xamp, Yamp, Zamp, delta, Xcount, Ycount, pitchX, pitchY) {
D2 = delta/2;
pitchX = Xamp / Xcount;
y_angle_pitch = 360/Ycount;
x_angle_pitch = 360/Xcount;
for ( seqY = [0:0.5:Ycount - 1] ){
for ( seqX = [0:0.5:Xcount - 1] ){
x = (seqX ) * pitchX ;
y = (seqY ) * pitchY ;
// ---------------------------------------------------------------------------------------------------------
hull(){ // works only on X axis (why ?)
amp = Zamp * cos( seqY * y_angle_pitch - 180);
z = amp * cos((seqX ) * x_angle_pitch - 180);
translate([x , y, Zamp]){ cube([delta, delta, z + Zamp + 0.1]); }
// --------------------------------------------------------------------------------------------------------
amp = Zamp * cos((seqY + 0.5) * y_angle_pitch - 180);
z = amp * cos((seqX ) * x_angle_pitch - 180);
translate([x , y + D2, Zamp]){ cube([delta, delta, z + Zamp + 0.1]); }
// --------------------------------------------------------------------------------------------------------
amp = Zamp * cos( seqY * y_angle_pitch - 180);
g = amp * cos((seqX + 0.5 ) * x_angle_pitch - 180);
translate([x + D2, y, Zamp]){ cube([delta, delta, g + Zamp + 0.1]); }
// --------------------------------------------------------------------------------------------------------
amp = Zamp * cos((seqY + 0.5) * y_angle_pitch - 180);
g = amp * cos((seqX + 0.5 ) * x_angle_pitch - 180);
translate([x + D2, y + D2, Zamp]){ cube([delta, delta, g + Zamp + 0.1]); }
}
// ---------------------------------------------------------------------------------------------------------
}
}
}
Xamp = 50; // one wave length
Yamp = 50; // one wave length
Zamp = 20; // amplitude (height)
Xcount = 50;
Ycount = 50;
pitchX = Xamp/Xcount;
pitchY = Yamp/Ycount;
delta = pitchX;
X2 = Xamp/2;
Y2 = Yamp/2;
D2 = delta/2;
SignWaveHill(Xamp, Yamp, Zamp, delta, Xcount, Ycount, pitchX, pitchY);
( Post message... )
#2 x 1.4142 version STL modeld
// SignWave shaped hill
// ---------------------------------------------------------------------
module SignWaveHill (Xamp, Yamp, Zamp, delta, Xcount, Ycount, pitchX, pitchY) {
D2 = delta/2;
pitchX = Xamp / Xcount;
y_angle_pitch = 360/Ycount;
x_angle_pitch = 360/Xcount;
for ( seqX = [0:0.5:Xcount - 1] ){
for ( seqY = [0:0.5:Ycount - 1] ){
x = (seqX ) * pitchX ;
y = (seqY ) * pitchY ;
// ---------------------------------------------------------------------------------------------------------
hull(){ // works only on X axis (why ?)
amp = Zamp * cos( seqY * y_angle_pitch - 180);
z = amp * cos((seqX ) * x_angle_pitch - 180);
translate([x , y, Zamp]){ cube([delta, delta, z + Zamp + 0.1]); }
amp = Zamp * cos((seqY + 0.5) * y_angle_pitch - 180);
z = amp * cos((seqX ) * x_angle_pitch - 180);
translate([x , y + D2, Zamp]){ cube([delta, delta, z + Zamp + 0.1]); }
amp = Zamp * cos( seqY * y_angle_pitch - 180);
g = amp * cos((seqX + 0.5 ) * x_angle_pitch - 180);
translate([x + D2, y, Zamp]){ cube([delta, delta, g + Zamp + 0.1]); }
amp = Zamp * cos((seqY + 0.5) * y_angle_pitch - 180);
g = amp * cos((seqX + 0.5 ) * x_angle_pitch - 180);
translate([x + D2, y + D2, Zamp]){ cube([delta, delta, g + Zamp + 0.1]); }
}
// ---------------------------------------------------------------------------------------------------------
}
}
}
Xamp = 50 * 1.4142; // one wave length
Yamp = 50 * 1.4142; // one wave length
Zamp = 20; // amplitude (height)
Xcount = 50;
Ycount = 50;
pitchX = Xamp/Xcount;
pitchY = Yamp/Ycount;
delta = pitchX;
X2 = Xamp/2;
Y2 = Yamp/2;
D2 = delta/2;
SignWaveHill(Xamp, Yamp, Zamp, delta, Xcount, Ycount, pitchX, pitchY);
( Post message... )
2024年01月30日(火) 旧暦 [n年日記] [更新:"2024/01/30 06:05:18"]#1 [openscad] Sign Wave by hexagonal placemnet
STL format (one unit)
![]()
The left: one unit, count = 100, this is to be used for conversion
the right: 4 x 4 unit, count = 50, this is just for a reference for placement.
R3 = 1.7320508;
module SignWaveHexagonal ( X, Y, Z, count ) {
Z2 = Z/2; // cos varies -1 to 1, make it half
delta = X /count;
constx = -180; // phase shift to start on bottom
consty = 0;
zshift = 1; // convert amplitude (-1 to +1) to (0, 2)
bottom = 0.1; // not to give true 0
for ( seqY = [0:1:count - 1] ){
for ( seqX = [0:1:count - 1] ){
x = (seqX ) * delta ; // location x
y = (seqY ) * delta * R3 / 2; // location y
height = Z2 * (cos (seqY / count * 360 + constx ) + zshift )
* (cos (seqX / count * 360 + consty / 2 * R3) + zshift ) + bottom;
translate ([x,y,0]) cube ([delta, delta, height]);
}
}
}
module two_unit (x, y, z, count) {
translate([ x/2, y/2 * R3, 0]) SignWaveHexagonal ( x, y, z, count ) ;
SignWaveHexagonal ( x, y, z, count ) ;
}
n = 0; // n = 0 gives only one unit, place x pitch 50, y pitch 86.60
count = 100; // not make too big if n > 1
// n = 0, count = 200 needs 20 minutes to generate STL format
for (xn = [0:1:n]){
x = xn * 50;
for (yn = [0:1:n]){
y = yn * 50 * R3 * 2;
translate([x, y, 0]) two_unit (50,50,20, count);
}
}
( 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 | ||