2012-02-24 34 views
5

Tôi có băng chuyền này quay 3D bằng cách sử dụng -webkit-transform: rotateX(rotation in deg);. Nó có 10 panes có nghĩa là mỗi 36deg có một ô trung tâm.Cách tính góc quay của ô gần nhất trong băng chuyền

Bây giờ, tôi đang cố gắng tạo hiệu ứng "snap to" được gọi trên sự kiện touchend, đặt ô gần nhất căn giữa ở phía trước.

Vấn đề của tôi là, từ một giá trị xoay tùy ý, giả sử -1820 deg, làm cách nào để tính toán khung nào, hay đúng hơn, ở mức độ nào là ô gần nhất?

Hy vọng điều đó có ý nghĩa. Một gợi ý sẽ được nhiều đánh giá cao.

Trả lời

4

Nếu tôi đánh giá thấp câu hỏi của bạn, bạn nên sử dụng toán tử mô đun, về cơ bản phần còn lại của phân chia, theo số wg3schools được định nghĩa là dấu phần trăm%.

Ví dụ: 5% 2 bằng 1

Trong trường hợp của bạn, bạn có thể làm semthing như

var initialAngle= getAngle(); //let's say it's 1820 
var closestPane= initialAngle%36; //which gives you 20. 

Vì vậy, bây giờ bạn biết vị trí của resepct góc của bạn với góc trước đó (chúng ta hãy gọi nó A). Nếu bạn thực hiện thao tác đơn giản bổ sung (36-20 = 16), bạn cũng biết khoảng cách từ góc sau đây.

angle before ---- A ---- angle after 
      20deg 16deg 

Hope this helps

+0

có thể bạn đang ở trên một cái gì đó ở đó, nhưng những gì tôi cần là một góc tối đa là -36 từ -1820. – jenswirf

+0

Ok tôi chỉnh sửa câu trả lời của mình –

+0

để hiểu rõ hơn về toán tử modulo, trong trường hợp bạn cần, tôi thấy điều này: 'modulo về cơ bản có nghĩa là' tiếp tục lấy số thứ hai từ số đầu tiên. thành số âm, bất kỳ thứ gì còn lại là câu trả lời "'. Nó đã được đăng ở đây http://ask.metafilter.com/43903/Help-me-understand-modulus-operators. –

0

Đây là những gì tôi đã kết thúc với dựa trên đầu vào Danele B ..

function snapToAngle(Angle) { 
var deltaAngle = Math.abs(Angle)%36; 

    if (Angle >= 0) { 
     (deltaAngle <= 18) ? Angle -= deltaAngle : Angle+=36-deltaAngle; 
    } else { 
     (deltaAngle <= 18) ? Angle += deltaAngle : Angle -= 36-deltaAngle; 
    } 
return Angle; 
} 

tôi chắc chắn rằng có một cách gọn gàng viết này, nhưng có vẻ như làm việc ..

Các vấn đề liên quan