我试着为一个免费的扑克游戏(HTML/Javascript客户端,python服务器)显示一些芯片。
桌子中央有座位。
对于每个座位,我知道cosinus,窦,radius(距桌子中心的距离),和values/counts芯片数组。
我试着在座位点的切线上显示对齐和平衡的每个芯片
在图像中:(我无法创建图像,因此:http://i.stack.imgur.com/a4Obw.png
现在,我写了这段代码:

function balanced_stack( chips, cos, sin, radius )
{
    var html = ''

    // I receive a chips array like [ [ 100, 8 ], [ 200, 10 ], [ 500, 7 ] ]
    // so 8 chips of 100$, 10 chips of 200$ .. etc
    for(var i in chips)
    {
        var value = chips[i][0]; // the token value
        var count = chips[i][1]; // the token count

        var m = 0; // margin for a single stack
        var left = i * 20 * sin + cos * radius;
        var top = -i * 20 * cos + sin * radius;

        for( var j=1; j<= count; j++ )
        {
            html += '<img style="z-index:'+( parseInt(top) + 9999)+'; left:'+left+'px; top: '+top+'px; margin-top:'+( -2*m )+'px;" \
                            src="/images/chips/'+value+'.png" />'
            m ++;
        }

        return html
    }
}

但它不平衡,不好看。
加:因为桌子可能是椭圆形的,所以余弦和窦可以大于1小于-1

最佳答案

如果椭圆是由{a*cos(x),b*sin(x)}定义的,则切线是{-a*sin(x),b*cos(x)}。使用将椭圆的轴与表格周围角度的正弦/余弦结合起来的定义不允许您轻松提取。此外,把这个量叫做sin/cos似乎是个坏主意,因为它们的数学定义限制在-1到+1的范围内。。。

09-10 10:30
查看更多