小编Zac*_*ght的帖子

如何将3D点转换为2D透视投影?

我目前正在使用Bezier曲线和曲面来绘制着名的犹他州茶壶.使用16个控制点的Bezier贴片,我已经能够绘制茶壶并使用"世界到相机"功能显示它,这使得能够旋转生成的茶壶,并且目前正在使用正交投影.

结果是我有一个"扁平"茶壶,预计正投影的目的是保持平行线.

但是,我想使用透视投影来给出茶壶深度.我的问题是,如何从"世界到相机"函数返回3D xyz顶点,并将其转换为2D坐标.我想在z = 0时使用投影平面,并允许用户使用键盘上的箭头键确定焦距和图像大小.

我在java中编程并设置了所有输入事件处理程序,并且还编写了一个处理基本矩阵乘法的矩阵类.我已经阅读了维基百科和其他资源一段时间,但我无法完全了解如何执行此转换.

java 3d graphics bezier

51
推荐指数
5
解决办法
9万
查看次数

与jQuery中的"scrollTop"相反

jQuery有一个名为scrollTop的函数,可用于查找隐藏在当前页面视图上方的像素数.

我不确定为什么,但没有scrollBottom函数返回当前页面视图下方的像素数.

有没有添加此功能的jQuery插件?或者它需要一些精心设计的数学与窗口/文档高度和scrollTop值?

jquery

24
推荐指数
1
解决办法
4万
查看次数

Rails和<span>标签

我是Ruby on Rails的新手,我试图使用"滑动门"技术创建一些花哨的CSS按钮.我有它几乎工作,但我觉得必须有一个更好的方法来处理链接的标签.

我目前正在这样做的方式:

 <%= link_to '<span>New car</span>', {:action => "new"}, :class=>"button" %> 
Run Code Online (Sandbox Code Playgroud)

这本身并不可怕,但我想知道这是否是在RoR中处理span标签的最佳方法.

html ruby-on-rails

21
推荐指数
3
解决办法
2万
查看次数

Rails 3没有id的资源路由

我正在Rails 3上创建一个博客应用程序,我想要覆盖为帖子生成的默认show route

resources :posts, :except => :show
Run Code Online (Sandbox Code Playgroud)

这为节目路线产生了(我没有排除它),

/post/:id
Run Code Online (Sandbox Code Playgroud)

我希望我的路由看起来像这样,其中url_title是我的模型在before_save上生成的字符串,它删除非字母数字字符并用连字符替换空格.

/:year/:month/:day/:url_title
Run Code Online (Sandbox Code Playgroud)

我试图用这段代码来完成这个:

match "/:year/:month/:day/:url_title", :to => "posts#show", :as => :post
Run Code Online (Sandbox Code Playgroud)

从理论上讲,这应该允许我调用post_path(@ post)(其中@post是我的post类的一个实例),它应该能够排除这个路径,它几乎可以工作.

唯一的问题是它试图用年份替换帖子的id.其他字段填写正确.我认为这种情况正在发生,因为rails有一些默认行为使得它真的,真的想在URL中拥有id,并且它不相信我使用我自己的唯一标识符(在这种情况下是post.url_title).

我可能错了.任何人都有这种路由的经验,或知道是什么?

routing ruby-on-rails

18
推荐指数
1
解决办法
3884
查看次数

递归和大O.

我一直在研究最近的计算机科学作业,包括递归和大O符号.我相信我很了解这一点(当然不是很完美!)但是有一个问题特别是给我最多的问题.奇怪的是,通过观察,它看起来是家庭作业中最简单的一个.

使用big-Oh表示法提供最佳增长率,以解决以下重现问题?

T(1)= 2

对于n> 1,T(n)= 2T(n-1)+ 1

选择是:

  • O(n log n)
  • 为O(n ^ 2)
  • O(2 ^ n)的
  • 为O(n ^ n)的

我知道大O作为一个上限,用于描述该程序或过程将采取的大部分计算或最高运行时间.我觉得这个特殊的递归应该是O(n),因为最多只有n的每个值都会发生一次递归.由于n不可用,它要么比那更好,O(nlogn),或者更糟糕的是,作为其他三个选项.

所以,我的问题是:为什么不是这个O(n)?

recursion complexity-theory big-o computer-science

12
推荐指数
2
解决办法
1万
查看次数

常见的lisp错误:"应该是lambda表达式"

我刚刚开始学习Common Lisp,我正在尝试构建一个将数字插入树中的函数.我收到一个错误,

*** - SYSTEM ::%EXPAND-FORM :( CONS NIL LST)应该是lambda表达式

从谷歌搜索,似乎这种情况发生在你有太多的括号集,但看了一个小时左右,并改变了周围的事情,我无法弄清楚我可以做到这一点.

这是它发生的代码:

(defun insert (lst probe)
    (cond ((null lst) (cons probe lst))
        ((equal (length lst) 1)
            (if (<= probe (first lst))
                (cons probe lst)
                (append lst (list probe))))
        ((equal (length lst) 2)
            ((cons nil lst) (append lst nil) (insertat nil lst 3)
                (cond ((<= probe (second lst)) (insert (first lst) probe))
                     ((> probe (fourth lst)) (insert (fifth lst) probe))
                     (t (insert (third lst) probe)))))))
Run Code Online (Sandbox Code Playgroud)

我很确定它发生在((等于(长度为lst)2)之后,其中的想法是在现有列表中插入一个空列表,然后在末尾附加一个空列表,然后在中间插入一个空列表.

lisp common-lisp syntax-error

9
推荐指数
2
解决办法
2万
查看次数

覆盖CSS样式

我正在定义一些CSS类,当应用于表时,将生成一些默认样式.

例如,假设我创建了一个名为myTable的类:

.myTable {
  th {
    background-color: #000;
  }

  td {
    background-color: #555;
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,任何具有.myTable类的表都会默认获得th和td上的那些颜色.

我认为如果将另一个类分配给一个单独的td,那么它将覆盖默认样式.

所以,如果我有另一个班:

.red { background-color: red; }
Run Code Online (Sandbox Code Playgroud)

还有一张桌子:

<table class=myTable>
  <th class="red">Content</th>
  <td>Hello!</td>
</table>
Run Code Online (Sandbox Code Playgroud)

我认为"红色"类会导致标题的背景为红色,而不是黑色.事实并非如此.为了使这个类重写原始类,必须在myTable类中定义它,如下所示:

td.red { background-color: red; }
Run Code Online (Sandbox Code Playgroud)

我在这里遗漏了什么,有没有其他方法可以做到这一点,以便我可以有更容易被覆盖的默认样式?

css

8
推荐指数
2
解决办法
3万
查看次数

避免精度损失的最佳算法?

我收到的最近的家庭作业要求我们采取表达式,这些表达式可能会在计算机中执行时造成精度损失,并对其进行更改以避免这种损失.

不幸的是,这样做的方向尚未明确.通过观察正在执行的各种示例,我知道有一些方法可以做到这一点:使用泰勒级数,如果涉及平方根则使用共轭,或者在减去两个分数时找到共同的分母.

但是,我很难注意到何时会发生精度损失.到目前为止,我唯一确定的是,当你减去两个接近相同的数字时,由于高阶数字很重要,你会失去精确度,而你会因为四舍五入而失去精确数字.

我的问题是我应该寻找的其他常见情况,以及接近它们的"好"方法是什么?

例如,这是一个问题:

f(x) = tan(x) ? sin(x)  when x ~ 0
Run Code Online (Sandbox Code Playgroud)

在这三种选择中评估这一点的最佳和最差算法是什么:

(a) (1/ cos(x) ? 1) sin(x),
(b) (x^3)/2
(c) tan(x)*(sin(x)^2)/(cos(x) + 1).
Run Code Online (Sandbox Code Playgroud)

据我所知,当x接近于零时,tan(x)和sin(x)几乎相同.我不明白为解决这个问题,这些算法中的任何一个或更好的方式或原因.

precision numerical-analysis

7
推荐指数
1
解决办法
2880
查看次数

PHP和并发

我最近在PHP上做了一些Web开发工作,这使我一直在学习语言.到目前为止,我不需要使用它来与数据库进行交互,但我知道它提供了许多方便的功能.

虽然我知道基本的SQL并且已经在数据库中使用数据的基本操作,但我不明白基于PHP/Javascript/SQL建立网站的Web开发人员能够管理同时修改相同数据的用户.

例如,假设您有一个二十一点网站,用户在注册时将用户划分为两个团队中的一个.每当用户赢得游戏时,他们的部分奖金将被添加到该团队的运行总计中.

那么让我们说这个函数的伪代码看起来像这样:

... 
$total = mysql_query("SELECT score FROM team1");
$total = $total + $mytotal;
mysql_query("UPDATE team1 SET score='".$total."'");
...
Run Code Online (Sandbox Code Playgroud)

如果两个玩家同时玩,那么他们很有可能在另一个玩家有机会增加和更新表之前调用SELECT,因此一个用户的更改将立即被覆盖.

我的问题是,如何避免这种情况?它是在代码级使用PHP完成的,还是由您使用的任何数据库提供的功能有助于防止这种情况?

我一直在做一些研究,似乎PHP确实提供了信号量机制,我也注意到mysql提供了一个LOCK表功能.但是,我不确定在实践中使用哪一种,如果有的话.

php database concurrency

7
推荐指数
3
解决办法
8331
查看次数

应该在域类中使用什么逻辑以及Grails中的服务应该包含哪些内容?

我正在开发我的第一个Grails应用程序,它涉及移植旧的struts web应用程序.有很多现有的功能,当我移动时,我很难决定应该在服务中使用什么以及应该直接包含在模型中的内容?

来自大多数Ruby on Rails开发的背景,我觉得强烈倾向于将几乎所有内容都放在与它相关的域类中.但是,对于一个像我移植的应用程序一样大的应用程序,一些类最终将成千上万行.

您如何决定域中的内容与服务中应该包含哪些内容?有没有既定的最佳实践?我做了一些环顾四周,但大多数人似乎只是承认这个问题.

oop grails

7
推荐指数
1
解决办法
759
查看次数