CHU VI CỦA HÌNH VUÔNG BỊ BO TRÒN
Nếu trước đó bạn đã biết câu chuyện về logo của Xiaomi với giá 300.000 đô la, thì hôm nay tôi có một câu chuyện với giá dưới 300.000 đồng.

Kit Module
2 phút đọc
@kitmodule
26 tháng 06 năm 2024

Chuyện là hôm qua tôi gặp một vấn đề về thuật toán. Đó là làm sao để tính diện tích của hình vuông bị bo tròn và "offset" khoảng cách bù lại đó. Cũng không có gì để nói khi hình vuông thì nó vuông, và hình tròn thì nó tròn. Ngồi tìm kiếm và đọc tài liệu, sử dụng bot để đưa ra câu trả lời chung. Nhưng kết quả cuối cùng phải là do chính mình giải quyết.
Khi bạn có một hình vuông với các cạnh bằng nhau, thì chu vi của hình vuông đó là 4l (là độ dài cạnh). Và chu vi của hình tròn là 2πR (với R là bán kính).
Nếu ta bo tròn một góc của hình vuông đi 1 hoặc 2 cm, thì chu vi sẽ là bao nhiêu? Thế là OMG! Lập một bảng tính Excel, kiểm tra và thậm chí hỏi cả bot nhưng vẫn không có câu trả lời.
May mắn thay, tôi có kiến thức về thiết kế và SVG từ lâu, nên đã vẽ ra một hình vuông rất chi là tròn. Sau khi áp dụng bo tròn, nó lại tròn hơn một chút nữa. Và border chính là chu vi của hình vuông tròn đó. Công thức được suy luận từ thuật toán là:
Chu vi = 4 x cạnh - 8 x bo tròn + 2π x bo tròn.
Tại sao lại có công thức này? Vì khi bạn bo tròn một góc nhỏ, thì phần được bo tròn đó bằng 1/4 của một hình vuông mới được tạo ra từ 4 hình vuông nhỏ, mỗi hình có một góc được bo tròn khác nhau, nhưng diện tích chúng là như nhau.
Chưa dừng lại ở đó, khi chia đường viền ra thành các phần bằng nhau, sẽ có một border gọi là dash. Khi Dash này thay đổi, đường viền cũng được chia thành các đoạn bằng nhau. Nhưng các đoạn này chỉ xuất hiện ở 4 góc vuông hoặc tròn để đảm bảo các góc đều nhau.
Nhưng khi chia đều các góc, sẽ thiếu một phần. Để cân bằng các góc này, chúng ta sử dụng offset. Khi thêm vào offset này một phần còn thiếu, chúng ta sẽ đưa các điểm về vị trí chính giữa và chia đều các góc và chia đều hình tròn thành các border dash bằng nhau.
36
lượt xem
Bài Viết Liên Quan

Trong thế giới JavaScript, chúng ta đã quen với những khái niệm như bind, model, class hay style. Chúng đều xoay quanh một triết lý chung: data đi xuống, view phản ứng.

Có lẽ trên con đường Affiliate Hay trở thành Một Top Publisher sẽ không ít khó khăn ở từng giai đoạn nhưng Affiliate đã đưa mình vào những thành tựu bản thân muốn đạt được từ những bước chân đầu tiên. Với chỉ 14 nghìn một tháng, ăn cơm nhà và dám mơ ước được những điều lớn lao sau này. Trong ước vọng của trái tim nhỏ bé này chưa bao giờ ngừng mơ ước hoài bão, về điều gì đó có thể hình thành.

Hôm nay, tôi tình cờ đọc được một câu hỏi thú vị: “Bạn đang dùng stack gì thế?” Có thể bạn đã nghe đến những tên gọi quen thuộc như LAMP, LEMP, MEAN hay thậm chí là JAM stack. Nhưng GFPV Stack là gì? Có thể đây là một khái niệm bạn chưa từng nghe đến. Hôm nay, tôi sẽ chia sẻ về GFPV Stack – con đường tôi đã đi qua, những gì tôi đã học hỏi và trải nghiệm.

Đôi khi, một giấc mơ không bắt đầu bằng những điều lớn lao. Nó chỉ đơn giản nhen nhóm từ một khoảnh khắc tỉnh thức – khi ta dám dừng lại, dám đi chậm hơn một nhịp giữa guồng quay vội vã của cuộc sống, để lắng nghe chính mình.

Tiếp nối bài viết trước, nhiều người hỏi mình chơi "đồ" gì mà viết văn hay thế. Hôm nay mình xin trả lời thắc mắc của "khán thính giả". Và đây, được sự tài trợ bằng LLM ( lời treo chọc nên anh em đọc tham khảo thôi nhé )

Khi tôi bắt đầu hành trình lập trình và phát triển phần mềm, tôi chưa bao giờ nghĩ mình sẽ trở thành một Indie Hacker. Đối với tôi, chỉ đơn giản là tôi đang xây dựng những sản phẩm phần mềm mà tôi cảm thấy đam mê và muốn chia sẻ với cộng đồng. Nhưng dần dần, khi tôi nhìn lại con đường mình đã đi, tôi nhận ra rằng tôi đã bước vào thế giới của những Indie Hacker từ lúc nào không hay.

Golang (Go) là một ngôn ngữ lập trình đơn giản, hiệu quả, và mạnh mẽ, đặc biệt phù hợp cho những ai muốn xây dựng các ứng dụng có hiệu suất cao và dễ dàng mở rộng. Trong bài viết này, tôi sẽ chia sẻ lộ trình học Golang của mình và những trải nghiệm cá nhân trong quá trình học tập, hướng đến những người mới bắt đầu tìm hiểu ngôn ngữ này.

Tôi – Huỳnh Nhân Quốc .Tôi không đến với công nghệ qua những giảng đường đại học.Không bằng cấp. Không giáo trình. Không người chỉ dẫn. Chỉ là một góc nhỏ với một chiếc laptop cũ và một đứa trẻ mộng mơ ngồi gõ những dòng HTML đầu tiên trong ánh đèn của phòng nhỏ.
