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.
KITNEXT
@kitnext
2 phút đọc
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.
12
lượt xem
Bài Viết Liên Quan
Cuối cùng, tôi vẫn tự hỏi: “Nếu có một dự án lớn, mình sẽ làm gì?”. Tôi chẳng có gì ngoài những nợ nần và niềm đam mê. Nhưng tôi biết, chỉ cần còn đam mê, tôi vẫn sẽ bước tiếp. "Coding and life" - đó là cách mà kẻ dại khờ này tiếp tục.
Khi bản thân tự định hướng cho mình một lối đi. Một con đường và một ánh sáng thì cứ đi theo ánh sáng đó.
Có vẽ dạo gần đây có nhiều câu chuyện về quảng cáo Youtube và sự can thiệp của Server Side Render từ sever của youtube đang dần trở nên phổ biến. Bài viết này sẽ chia sẽ những điều tôi biết vê Server Side Rendering...
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.
Thế giới công nghệ phát triển nhanh chóng, và một trong những bước tiến thú vị mà tôi có cơ hội tiếp cận là hệ giao thức phân tán. Cơ hội này mở ra từ những nhu cầu tưởng chừng đơn giản như xây dựng một ứng dụng chat trực tiếp giữa các thiết bị mà không cần máy chủ trung gian. Điều này đưa tôi đến với các giao thức phân tán như WebRTC và các phương pháp truyền dữ liệu ngang hàng (Peer-to-Peer, hay P2P).
Chỉ là mình thích cách lập trình web của mình. Có thể tùy chỉnh theo ý thích và không phụ thuộc vào framework.
Node ID và Multi-Node ID:An toàn và bảo mật: Mỗi dữ liệu được mã hóa theo từng node khác nhau, kết hợp với thuật toán mã hóa riêng biệt, tạo ra một cấu trúc dữ liệu chặt chẽ và không giống nhau, đảm bảo tính an toàn và bảo mật cho thông tin.