列和相减 L3-L2

--列和相减 L3-L2
declare @test table(L1 varchar(50),L2 int,L3 int)
insert into @test
select 'A1',10,10 union all
select 'A1',10,5 union all
select 'A1',5,5 union all
select 'B1',10,20 union all
select 'B1',5,5 

select * from @test
select a.*,b.L4 from @test a join
(
select L1,sum(L3)-Sum(L2) as L4 from @test group by L1) b on a.L1=b.L1


/*
L1                                                 L2          L3
-------------------------------------------------- ----------- -----------
A1                                                 10          10
A1                                                 10          5
A1                                                 5           5
B1                                                 10          20
B1                                                 5           5



L1                                                 L2          L3          L4
-------------------------------------------------- ----------- ----------- -----------
A1                                                 10          10          -5
A1                                                 10          5           -5
A1                                                 5           5           -5
B1                                                 10          20          10
B1                                                 5           5           10

(5 行受影响)

*/

    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2010/01/03/1638153.html,如需转载请自行联系原作者



``` int kinematics_move(float x, float y, float z, int time) { int i,j, min = 0, flag = 0; if(y < 0)return 0; //寻找最佳角度 flag = 0; for(i=0;i>=-135;i--) { if(0 == kinematics_analysis(x,y,z,i,&kinematics)){ if(i<min)min = i; flag = 1; } } //用3号舵机与水平最大的夹角作为最佳值 if(flag) { kinematics_analysis(x,y,z,min,&kinematics); for(j=0;j<4;j++) { set_servo(j, kinematics.servo_pwm[j], time); } return 1; } return 0; } /* x,y ΪÓ&sup3;Éäµ&frac12;Æ&frac12;ÃæµÄ×ø±ê zΪ&frac34;àÀëµØÃæµÄ&frac34;àÀë Alpha Ϊצ×ÓºÍÆ&frac12;ÃæµÄ¼Ð&frac12-25~-65·¶Î§±È&frac12;Ϻà */ int kinematics_analysis(float x, float y, float z, float Alpha, kinematics_t *kinematics) { float theta3, theta4, theta5, theta6; float l0, l1, l2, l3; float aaa, bbb, ccc, zf_flag; //·Å´ó10±¶ x = x*10; y = y*10; z = z*10; l0 = kinematics->L0; l1 = kinematics->L1; l2 = kinematics->L2; l3 = kinematics->L3; if(x == 0) { theta6 = 0.0; } else { theta6 = atan(x/y)*180.0/pi; } y = sqrt(x*x + y*y);//x,y б±ß y = y-l3 * cos(Alpha*pi/180.0); z = z-l0-l3*sin(Alpha*pi/180.0); if(z < -l0) { return 1; } if(sqrt(y*y + z*z) > (l1+l2)) { return 2; } ccc = acos(y / sqrt(y * y + z * z)); bbb = (y*y+z*z+l1*l1-l2*l2)/(2*l1*sqrt(y*y+z*z)); if(bbb > 1 || bbb < -1) { return 3; } if (z < 0) { zf_flag = -1; } else { zf_flag = 1; } theta5 = ccc * zf_flag + acos(bbb); theta5 = theta5 * 180.0 / pi; if(theta5 > 180.0 || theta5 < 0.0) { return 4; } aaa = -(y*y+z*z-l1*l1-l2*l2)/(2*l1*l2); if (aaa > 1 || aaa < -1) { return 5; } theta4 = acos(aaa); theta4 = 180.0 - theta4 * 180.0 / pi ; if (theta4 > 135.0 || theta4 < -135.0) { return 6; } theta3 = Alpha - theta5 + theta4; if(theta3 > 90.0 || theta3 < -90.0) { return 7; } kinematics->servo_angle[0] = theta6; kinematics->servo_angle[1] = theta5-90; kinematics->servo_angle[2] = theta4; kinematics->servo_angle[3] = theta3; kinematics->servo_pwm[0] = (int)(1500-2000.0 * kinematics->servo_angle[0] / 270.0); kinematics->servo_pwm[1] = (int)(1500+2000.0 * kinematics->servo_angle[1] / 270.0); kinematics->servo_pwm[2] = (int)(1500+2000.0 * kinematics->servo_angle[2] / 270.0); kinematics->servo_pwm[3] = (int)(1500-2000.0 * kinematics->servo_angle[3] / 270.0); return 0; }```theta3 = Alpha - theta5 + theta4;有没有问题,为什么
03-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值