德莱联盟(判断线段是否相交)

德莱联盟

时间限制: 1000 ms  |  内存限制: 65535 KB
难度:1
描述

欢迎来到德莱联盟。。。。

德莱文。。。

德莱文在逃跑,卡兹克在追。。。。

我们知道德莱文的起点和终点坐标,我们也知道卡兹克的起点和中点坐标,问:卡兹克有可能和德莱文相遇吗?,并且保证他们走的都是直线。

输入
几组数据,一个整数T表示T组数据
每组数据 8个实数,分别表示德莱文的起点和终点坐标,以及卡兹克的起点和终点坐标
输出
如果可能 输出 Interseetion,否则输出 Not Interseetion
样例输入
2-19.74 7.14 22.23 -27.45 -38.79 -5.08 47.51 34.01-8.61 9.91 -32.47 6.47 -3.81 -16.1 7.82 -6.37
样例输出
InterseetionNot Interseetion
参考了这个博客,写的很好:http://www.cnblogs.com/zhangchaoyang/articles/2668562.html
#include<iostream>
using namespace std;
int px(double x1,double y1,double x2,double y2 ){ //判断p0p1 在 p0p2 的哪一侧 
	double chacheng = x1*y2-x2*y1;
	if(chacheng > 0)
	   return 1;  
    else if(chacheng  == 0)
       return 0;
    else if(chacheng < 0)
       return -1;
}
// 在线段上还是在其延长线上 
bool dy(double x,double y,double x1,double y1,double x2 ,double y2)
{
	if(x1>x2) swap(x1,x2);
	if(y1>y2) swap(y1,y2);
	if(x>=x1 && x <= x2 && y >= y1 && y <= y2)  
	  return true;
    else                   
      return false;
}
int main()
{
	int T;
	cin>>T;
	double x1,x2,x3,x4,y1,y2,y3,y4;
	while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4)
	{
	    int s1,s2,s3,s4;
	    s1 = px(x4-x1,y4-y1,x2-x1,y2-y1);
	    s2 = px(x3-x1,y3-y1,x2-x1,y2-y1);
	    s3 = px(x1-x3,y1-y3,x4-x3,y4-y3);
	    s4 = px(x2-x3,y2-y3,x4-x3,y4-y3);
	    int a,b;
	    //可能有一个点在线段上
		if(s1==0 || s2==0 || s3==0 ||s4 == 0){
			if(s1 ==0){
				if(dy(x4,y4,x1,y1,x2,y2)) cout<<"Interseetion"<<endl;
				else cout<<"Not Interseetion"<<endl;
			}else if(s2 == 0){
				if(dy(x3,y3,x1,y1,x2,y2)) cout<<"Interseetion"<<endl;
				else cout<<"Not Interseetion"<<endl;
			}else if(s3 == 0){
				if(dy(x1,y1,x3,y3,x4,y4)) cout<<"Interseetion"<<endl;
				else cout<<"Not Interseetion"<<endl;
			}else if(s4 == 0){
				if(dy(x2,y2,x3,y3,x4,y4)) cout<<"Interseetion"<<endl;
				else cout<<"Not Interseetion"<<endl; 
			}
		}else {
			 if(s1 == 1 && s2 == -1 || s2 == 1 && s1 == -1) a = 1;  
			 else a = 0; 
	         if(s3 == 1 && s4 == -1 || s4 == 1 && s3 == -1) b = 1;
	         else b = 0;
	         if(a&&b)
	         	cout<<"Interseetion"<<endl;
       	     else 
       	        cout<<"Not Interseetion"<<endl;
		}
	   
	}
	return 0;
}


### 关于德莱 LY51stcisp 烧录的方法与教程 目前针对德莱 LY51stcisp 的具体烧录方法和教程,在公开资料中并未广泛提及。然而,基于汽车电子行业的背景以及类似的嵌入式设备开发流程[^3],可以推测其烧录过程可能涉及以下几个方面的技术要点: #### 1. **硬件准备** 德莱 LY51stcisp 设备通常需要特定的硬件支持来进行固件烧录。这包括但不限于: - 编程器:用于连接目标芯片并传输数据。 - 接口适配器:如 JTAG 或 SWD 接口,这些接口常被用来调试和烧录微控制器。 #### 2. **软件工具链** 类似于其他嵌入式系统的烧录操作,LY51stcisp 可能依赖以下几种常见的工具链: - IDE 开发环境:如 Keil、IAR 或 Eclipse 配合 GCC 工具链。 - 特定厂商提供的烧录工具:某些情况下,制造商可能会提供专用的烧录程序或脚本文件。 下面是一个简单的 Python 脚本示例,展示如何通过串口发送命令到目标设备(假设该设备支持 UART 协议): ```python import serial def send_command(port, baudrate, command): ser = serial.Serial(port, baudrate) if not ser.is_open: raise Exception("Failed to open port.") try: ser.write(command.encode('utf-8')) response = ser.readline().decode('utf-8') return response.strip() finally: ser.close() result = send_command("/dev/ttyUSB0", 9600, "burn\r\n") print(f"Burn Result: {result}") ``` #### 3. **固件格式与配置** 固件通常是经过编译后的二进制文件,可能是 `.bin` 或者 `.hex` 格式的文件。对于 LY51stcisp 来说,确保固件版本匹配是非常重要的一步。如果存在多个变种型号,则需仔细核对其兼容性。 #### 4. **注意事项** 在实际执行过程中需要注意一些常见问题,比如电源电压设置不当可能导致损坏器件;通信协议错误会引发握手失败等问题。因此建议严格按照官方文档指导完成每一步骤。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值