by 落霜枫舞

椭圆形活动桌面设计(2014年全国建模大赛B题)

by:落霜枫舞

代码:

R = 25; h = 50; CurveFunction[x_] := Sqrt[R^2 - (R - x)^2]; Manipulate[ Block[ {rotateAngle := ArcTan[(\[Lambda] (l - CurveFunction[d/2]) Sin[\[Alpha]])/( CurveFunction[d/2] - CurveFunction[(n - 1/2) d] + \[Lambda] (l - CurveFunction[d/2]) Cos[\[Alpha]])]}, Show[ (*画桌面*) Graphics3D[ Table[Cuboid[{-CurveFunction[(n - 1/2) d], (n - 1) d, 0}, {CurveFunction[(n - 1/2) d], n d, 3}], {n, 1, (2 R)/d}], BaseStyle -> {Opacity[0.5], Cyan}], (*画一侧桌腿*) Graphics3D[ Table[Rotate[ Cuboid[{CurveFunction[(n - 1/2) d], (n - 1) d, 0}, {CurveFunction[(n - 1/2) d] + l - CurveFunction[(n - 1/2) d], n d, 3}], If[rotateAngle < 0, \[Pi] + rotateAngle, rotateAngle], {0, 1, 0}, {CurveFunction[(n - 1/2) d], 0, 0}], {n, 1, (2 R)/d}]], (*画另一侧桌腿*) Graphics3D[ Table[Rotate[ Cuboid[{-CurveFunction[(n - 1/2) d], (n - 1) d, 0}, {-(CurveFunction[(n - 1/2) d] + l - CurveFunction[(n - 1/2) d]), n d, 3}], If[rotateAngle < 0, \[Pi] + rotateAngle, rotateAngle], {0, -1, 0}, {-CurveFunction[(n - 1/2) d], 0, 0}], {n, 1, (2 R)/d}]], (*画一侧钢筋*) Graphics3D[{Black, Opacity[1], Cylinder[{{(l - CurveFunction[d/2]) \[Lambda] Cos[\[Alpha]] + CurveFunction[d/2] + (3 Sin[\[Alpha]])/ 2, -2, -((l - CurveFunction[d/2]) \[Lambda] Sin[\[Alpha]] - ( 3 Cos[\[Alpha]])/ 2)}, {(l - CurveFunction[d/2]) \[Lambda] Cos[\[Alpha]] + CurveFunction[d/2] + (3 Sin[\[Alpha]])/2, 2 R + 2, -((l - CurveFunction[d/2]) \[Lambda] Sin[\[Alpha]] - ( 3 Cos[\[Alpha]])/2)}}]}], (*画另一侧钢筋*) Graphics3D[{Black, Opacity[1], Cylinder[{{-((l - CurveFunction[d/2]) \[Lambda] Cos[\[Alpha]] + CurveFunction[d/2] + (3 Sin[\[Alpha]])/ 2), -2, -((l - CurveFunction[d/2]) \[Lambda] Sin[\[Alpha]] - ( 3 Cos[\[Alpha]])/ 2)}, {-((l - CurveFunction[d/2]) \[Lambda] Cos[\[Alpha]] + CurveFunction[d/2] + (3 Sin[\[Alpha]])/2), 2 R + 2, -((l - CurveFunction[d/2]) \[Lambda] Sin[\[Alpha]] - ( 3 Cos[\[Alpha]])/2)}}]}], (*画阴影*)Graphics3D[{EdgeForm[None], Black, Polygon[{{(l - CurveFunction[d/2]) Cos[\[Alpha]] + CurveFunction[d/2] + 3 Sin[\[Alpha]], 0, -h}, {(l - CurveFunction[d/2]) Cos[\[Alpha]] + CurveFunction[d/2] + 3 Sin[\[Alpha]], 2 R, -h}, {-((l - CurveFunction[d/2]) Cos[\[Alpha]] + CurveFunction[d/2] + 3 Sin[\[Alpha]]), 2 R, -h}, {-((l - CurveFunction[d/2]) Cos[\[Alpha]] + CurveFunction[d/2] + 3 Sin[\[Alpha]]), 0, -h}}]}], Boxed -> False ] ], {{\[Alpha], ArcSin[h/(l - CurveFunction[d/2])], "桌腿张角"}, 0, ArcSin[h/(l - CurveFunction[d/2])]}, {{\[Lambda], 0.5, "钢筋位置"}, 0, 1}, {{d, 2.5, "木条宽度"}, 0, 10}, {{l, 60, "桌脚长度"}, h + CurveFunction[d/2], 200}]

谢谢落叶枫舞极快的回应,含蓄又热情的说~~~~

Mma们,继续投稿,不分领域,不限内容,你肯定懂的...

原文发布于微信公众号 - WOLFRAM(WolframChina)

原文发表时间:2014-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

惊闻NBC在奥运后放弃使用Silverlight

奥运初始的时候,媒体对于NBC使用Silverlight技术进行了高调的宣传,没想到奥运会结束刚刚三周的时间,NBC就弃用了Siverlight,重新采用Ado...

1192
来自专栏c#开发者

在DataGrid中选择,确认,删除多行复选框列表

在DataGrid中选择,确认,删除多行复选框列表 Selecting, Confirming & Deleting Mul...

3777
来自专栏GIS讲堂

Openlayers中热力图的实现

Heatmap 是用来呈现一定区域内的统计度量,最常见的网站访问热力图就是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。Heatmap.j...

5063
来自专栏calvin

SignalR主动通知订阅者示例

关键点:GlobalHost.ConnectionManager.GetHubContext

1493
来自专栏菩提树下的杨过

PixelBender(着色器)初体验

只要是玩过photoshop的人,一定会对ps中的各式各样、功能强大的滤镜(filter)留下深刻的印象。 Adobe是靠图形处理软件起家的,这方面一直是它的强...

2886
来自专栏程序你好

在WPF桌面程序中使用ECharts展示图表

2513
来自专栏菩提树下的杨过

Silverlight Telerik控件学习:TreeView数据绑定并初始化选中状态、PanelBar的Accordion效果、TabPanel、Frame基本使用

实际开发中控件的数据源肯定是动态绑定的,不可能在xaml里写死item项。既然要绑定,就先来几个实体类: ? 上面是类图,各类的代码如下:  Business...

2978
来自专栏王磊的博客

C# 控制台应用程序输出颜色字体[更正版]

首先感谢院子里的“yanxinchen”,之前的方法是通过c#调用系统api实现的,相比之下我的有点画蛇添足了,哈哈。 最佳解决方案的代码: static vo...

4018
来自专栏从零开始的linux

linux基础命令6

tr命令 # tr 'a-z' 'A-Z' < /etc/fstab # # /ETC/FSTAB # CREATED BY ANACONDA ON THU ...

2877
来自专栏智能计算时代

Best Bluemix Content

image.png Watson Services for Bluemix Sample Apps: Watson Films App (Video) Wats...

2784

扫码关注云+社区

领取腾讯云代金券