这可能是一个有点简单的问题,但我似乎无法让它发挥作用。
我想找到两个点的x截距。
让我们说我有以下两点: (5,3)和(3,4) 我想找到x截距。 目前这就是我所拥有的。哪个正确找到了y截距。在这种情况下5.5。
class PostTitle < Liquid::Tag
def initialize(tag_name, post, tokens)
super
@orig_post = post.strip
begin
@post = Jekyll::Tags::PostComparer.new(@orig_post)
rescue => e
raise Jekyll::Errors::PostURLError, <<-eos
Could not parse name of post "#{@orig_post}" in tag 'post_title'.
Make sure the post exists and the name is correct.
#{e.class}: #{e.message}
eos
end
end
def render(context)
site = context.registers[:site]
site.posts.docs.each do |p|
return p.data.title if @post == p
end
raise Jekyll::Errors::PostURLError, <<-eos
Could not find post "#{@orig_post}" in tag 'post_title'.
Make sure the post exists and the name is correct.
eos
end
end
Liquid::Template.register_tag('post_title', PostTitle)
答案 0 :(得分:5)
给定一条直线y = mx + n
,它会在y=0
时拦截x轴。
0 = xm + n --> x = -n/m
因此x截距将为-n/m
。
给定两个点(x_1,y_1), (x_2,y_2)
,您可以找到斜率和y轴截距:
m = (y_2-y_1)/(x_2-x_1)
n = -x_1*(y_2-y_1)/(x_2-x_1) + y_1
然后,x截距将是
x_1 - y_1*(x_2-x_1)/(y_2-y_1)
在JavaScript中,
function x_intercept(a, b) {
return a[0] - a[1]*(b[0]-a[0])/(b[1]-a[1]);
}
x_intercept([5, 3], [3, 4]); // 11
答案 1 :(得分:3)
function xIntercept(a, m) {
return a[0] - a[1] / m;
}
我建议您将点数表示为{x: 5, y: 3}
而不是[5, 3]
,因为它会使代码的其余部分更加清晰。
答案 2 :(得分:0)
我将通过&#34; math&#34;来解释它。而不是代码,也许这有助于理解所有这些背后的内容:
直线的公式可以表示为: y = kx + d
其中 k 是斜率, d 是该线的y相交。
因此,要计算x截距,您必须:
然后我们继续:
0 = k*x + d
0 = (-0,5)*x + 5,5
-5,5 = (-0,5)*x
11 = x
要找到x-intersect在