2011-11-25 69 views
2

请在屏幕上对点进行垂直反射对称,请考虑以下事项。替换列表中的项目

scrWidthCM=40 

originals={{14.2065, 10.609, 0.974938}, {19.5653, 6.92721, 0.974938}, 
      {30.4607,17.4802, 0.974938}, {27.4621, 10.0393, 0.974938}, 
      {15.915, 20.4278,0.974938}, {28.6921, 5.2132, 1.53205}, 
      {27.0317, 24.8346,1.53205}, {20.8853, 18.8588, 1.53205}} 

其中每个子表对应于:{x坐标,Y坐标值,半径}

运用对称传输到每个8分:

(scrWidthCM - #[[1]]) & /@originals 

我怎么能取代的第一个值每个子列表而不是简单地计算其反射的X坐标?

回答

4

假设你想直接修改originals对象:

originals[[All, 1]] = scrWidthCM - originals[[All, 1]] 

如果你想要一个副本,然后使用:

{scrWidthCM - #, ##2} & @@@ originals 
+0

谢谢你,第二个真正解决我的“真正的问题”因为我的原件是由我在这里发布的96个清单组成的。然而,令我困惑的是,你的代码可以将它应用到原件[[1]](原文的等价物)以及原件上,其中包含96个列表,如上所述。你能解释我为什么吗?非常感谢 ! – 500

+0

嗯,密谋,它实际上不起作用。我会简单地将你的解决方案映射到我的大名单上:-) – 500

+0

@ 500,你是说第二行是你想要的吗,但是你的实际数据有'ArrayDepth'等于'3'吗?在这种情况下,我相信你想要的是:'应用[{scrWidthCM - #,## 2}&,data,{2}]'(这是上面使用的'@@@'的一种长形式,级别规范'{2}'代替'{1}')。 –

相关问题