ใฏใใใซ
ไธ่จใงใใฉใใฉๆๅญไฝใฃใๆใจใปใผๅใๆงๆใง1็งใใจใซ้้ฒใใใฐใขใใญใฐๆ่จใงใใใใจๆใฃใใฎใงไฝใฃใฆใฟใ
ๅๅไฝใฃใใใฉใใฉๆๅญใซใคใใฆ
ใใญใธใงใฏใใฎไฝๆ
RustใงJavascriptๅดใใๆๅ็งใๅใๅใใ
็ธฆๆจช320ใฎ็กๅฐใฎ็ปๅใซๅๅพ155ใใคๅคชใ2ใฎๅใจใๅๅพ5ใฎๅใ็จๆใ
ๆฌกใซๆ้ๅ้็ง้ใๆธใใ(ไธ่ง้ขๆฐๅฟใใใฎใงGemini1.5proใซ่ใ๐ค)
(s as f64 / 60.0): ็งใๅใง่กจใ๏ผ0.0 - 1.0๏ผ
*360.0: ๅใซๅฏพใใ่งๅบฆใๅบฆๆฐๆณใง่จ็ฎ
-90.0: 0็งใฎใจใใซ็ง้ใ12ๆๆนๅใๆใใใใซ90ๅบฆ่ฃๆญฃ
(m as f64 + s as f64/ 60.0): ๅใซ็งใซใใ็ต้ๅใๅ ็ฎ
/60.0: ๅใๆ้ใง่กจใ๏ผ0.0 - 1.0๏ผ
*360.0: ๆ้ใซๅฏพใใ่งๅบฆใๅบฆๆฐๆณใง่จ็ฎ
-90.0: 0ๅใฎใจใใซๅ้ใ12ๆๆนๅใๆใใใใซ90ๅบฆ่ฃๆญฃ
(h as f64 % 12.0 + m as f64 / 60.0 + s as f64 / 3600.0):
h % 12.0: 12ๆ้ๅถใซใใใใใๆใ12ใงๅฒใฃใไฝใใ่จ็ฎ
ๅใจ็งใๆ้ใซๅคๆใใฆๅ ็ฎ
/12.0: ๆใ12ๆ้ใงๅฒใฃใฆใ12ๆ้ใซๅฏพใใๅฒๅใ่จ็ฎ
*360.0: 12ๆ้ใซๅฏพใใ่งๅบฆใๅบฆๆฐๆณใง่จ็ฎ
-90.0: 0ๆใฎใจใใซๆ้ใ12ๆๆนๅใๆใใใใซ90ๅบฆ่ฃๆญฃ
ใจใฎใใจใ(ๅฟใใใใฆใฆๆฐๅญฆใใ็ดใใใ๐)
ๆๅพใซใBase64ใฎๆๅญๅใ่ฟใใ
// ็็ฅ
#[wasm_bindgen]
pub fn clock_png(h : u32,m : u32,s : u32) -> String{
let mut img = DynamicImage::new_rgba8(320,320);
// ๅใฎไธญๅฟๅบงๆจ
let center_x = img.width() / 2;
let center_y = img.height() / 2;
draw_filled_circle_mut(&mut img, (center_x as i32, center_y as i32), 155, Rgba([0, 0, 0, 255]));
draw_filled_circle_mut(&mut img, (center_x as i32, center_y as i32), 153, Rgba([0, 0, 0, 0]));
draw_filled_circle_mut(&mut img, (center_x as i32, center_y as i32), 5, Rgba([0, 0, 0, 255]));
let s_angle = ((s as f64 / 60.0) * 360.0- 90.0).to_radians();
draw_line_segment_mut(&mut img,(center_x as f32, center_y as f32),(center_x as f32 + 140.0 * s_angle.cos() as f32,center_y as f32 + 140.0 * s_angle.sin() as f32),Rgba([0, 0, 0, 255])); // ็ง้
let m_angle = (((m as f64 + s as f64/ 60.0) / 60.0) * 360.0 - 90.0).to_radians();
draw_line_segment_mut(&mut img,(center_x as f32, center_y as f32),(center_x as f32 + 120.0 * m_angle.cos() as f32,center_y as f32 + 120.0 * m_angle.sin() as f32),Rgba([0, 0, 0, 255])); // ้ท้
let h_angle = (((h as f64 % 12.0 + m as f64 / 60.0 + s as f64 / 3600.0) / 12.0) * 360.0 - 90.0).to_radians();
draw_line_segment_mut(&mut img,(center_x as f32, center_y as f32),(center_x as f32 + 80.0 * h_angle.cos() as f32,center_y as f32 + 80.0 * h_angle.sin() as f32),Rgba([0, 0, 0, 255])); // ็ญ้
let mut buffer = Cursor::new(Vec::new());
img.write_to(&mut buffer, ImageFormat::Png).unwrap();
let base64_string = general_purpose::STANDARD.encode(buffer.get_ref());
// ใใผใฟURLๅฝขๅผใง่ฟใ
format!("data:image/png;base64,{}", base64_string)
}
// ็็ฅ
JavascriptใฎsetIntervalใง1็งใใจใซ
ไธ่จใฎ้ขๆฐใๅผใณๅบใใฆๅใใโฐ
// ็็ฅ
setInterval(()=>{
const now = new Date();
const h = now.getHours();
const m = now.getMinutes();
const s = now.getSeconds();
document.getElementById("mainImg").src = clock_png(h,m,s);
}, 1000);
// ็็ฅ
ใใใงใกใคใณใฎๆฉ่ฝใฏๅฎ่ฃ ๅฎไบ๏ผ๏ผ
ไปๅใฎๆๆ็ฉ
ใใขURL
ใใข็ปๅ
ใฝใผใน
ใพใจใ
ไปๅใฏRustใไฝฟใฃใฆใขใใญใฐๆ่จไฝใฃใฆใฟใพใใใ๐งโ๐จ
ๆฐๅญฆๅฟใใใใฆใฆใใไฝไบใไฝฟใใชใใจๅฟใใฆใใพใใจๅฎๆใใพใใ๐ง
ๅฎ็ใใใฎใฃใฆ้ฃใใใใใ
ใใใใชใใจใงใOutputใใฆใใใใจๆใใพใ๐ช
โป้้ใ็ญใใใพใใใใใๆๆใใใ ใใใจๅฉใใใพใใ
Comments
่คๆฐใฎใฆใฃใณใใฆใงๅใใใฎใใใใคใ่กจ็คบใใใใจๅใใใใใใงใใใไธ่จใฎๆนๆณใ ใจ่ตทๅใฟใคใใณใฐใซใใฃใฆใฏๆๅคง็ด1็งใฎ้ ใใ็บ็ใใฆใใพใใพใใ
setInterval()
ใงใฏใชใsetTimeout()
ใ็จใใฆใdelay
ใฏ1000
ๆฑบใๆใกใงใฏใชใ1000 - Date.now() % 1000
ใจใใใจใใปใผๆญฃ็ขบใซ็งใๅใๆฟใใใฟใคใใณใฐใงๆดๆฐใใใใใใซใชใใพใใLet's comment your feelings that are more than good