RT!!

解决方案 »

  1.   

    a1   b1   和 a2  b2  都是已知的    求帮忙!!
      

  2.   

    编程思路:
    1. 建立一个winform 里面需要有一个文本框来输入表达式。
    2. 用web client或者 web browser 控件登录csdn发帖
    3. 每隔10秒刷新一下回帖
      

  3.   

    x = -(b1 - b2)/(a1 - a2)
      

  4.   

    x = -(b1 - b2)/(a1 - a2)y = (a1*b2 - a2*b1)/(a1 - a2)
      

  5.   

    就是算二元一次方程嘛。
     y=a2+b2
    x=(y-b1)/a1 
      

  6.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Drawing;namespace ConsoleApplication7
    {
        class Program
        {        static PointF GetIntersection( PointF p1, PointF p2, PointF p3, PointF p4 )
            {
                /*
                 *  L1,L2都存在斜率的情况:
                 *  直线方程L1: ( y - y1 ) / ( y2 - y1 ) = ( x - x1 ) / ( x2 - x1 ) 
                 *  => y = [ ( y2 - y1 ) / ( x2 - x1 ) ]( x - x1 ) + y1
                 *  令 a = ( y2 - y1 ) / ( x2 - x1 )
                 *  有 y = a * x - a * x1 + y1   .........1
                 *  直线方程L2: ( y - y3 ) / ( y4 - y3 ) = ( x - x3 ) / ( x4 - x3 )
                 *  令 b = ( y4 - y3 ) / ( x4 - x3 )
                 *  有 y = b * x - b * x3 + y3  ..........2
                 *  
                 * 如果 a = b,则两直线平等,否则, 联解方程 1,2,得:
                 *  x = ( a * x1 - b * x3 - y1 + y3 ) / ( a - b )
                 *  y = a * x - a * x1 + y1
                 * 
                 * L1存在斜率, L2平行Y轴的情况:
                 * x = x3
                 * y = a * x3 - a * x1 + y1
                 * 
                 * L1 平行Y轴,L2存在斜率的情况:
                 * x = x1
                 * y = b * x - b * x3 + y3
                 * 
                 * L1与L2都平行Y轴的情况:
                 * 如果 x1 = x3,那么L1与L2重合,否则平等
                 * 
                */            float a = 0, b = 0;
                int state = 0;            if (p1.X != p2.X)
                {
                    a = (p2.Y - p1.Y) / (p2.X - p1.X);
                    state |= 1;
                }
                if (p3.X != p4.X)
                {
                    b = (p4.Y - p3.Y) / (p4.X - p3.X);
                    state |= 2;
                }
                switch (state)
                {
                    case 0: //L1与L2都平行Y轴
                        {
                            if (p1.X == p3.X)
                            {
                                throw new Exception("两条直线互相重合,且平行于Y轴,无法计算交点。");
                            }
                            else
                            {
                                throw new Exception("两条直线互相平行,且平行于Y轴,无法计算交点。");
                            }
                        }
                    case 1: //L1存在斜率, L2平行Y轴
                        {
                            float x = p3.X;
                            float y = a * x - a * p1.X + p1.Y;
                            return new PointF(x, y);
                        }
                    case 2: //L1 平行Y轴,L2存在斜率
                        {
                            float x = p1.X;
                            float y = b * x + b * p3.X + p3.Y;
                            return new PointF(x, y);
                        }
                    case 3: //L1,L2都存在斜率
                        {
                            if (a == b)
                            {
                                throw new Exception("两条直线平行或重合,无法计算交点。");
                            }
                            float x = (a * p1.X - b * p3.X - p1.Y + p3.Y) / (a - b);
                            float y = a * x - a * p1.X + p1.Y;
                            return new PointF(x, y);
                        }
                }
                throw new Exception("不可能发生的情况");
            }
            static void Main(string[] args)
            {
                try
                {
                    PointF pt = GetIntersection(
                        new PointF(0, 0),
                        new PointF(100, 100),
                        new PointF(0, 20),
                        new PointF(100, 80));
                    Console.WriteLine("交点: ( {0}, {1} )", pt.X, pt.Y);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }            Console.ReadKey();        }
        }} 
      

  7.   


    这是标准答案,(当然,Y,有很多种写法,化简,或者多项式这些写法, 结果都是一样的)当然, a1 == a2的情况, 就是 平行,他们没有交点,这是需要注意的