Crosswind
The first you wrote, which is that if the wind is 30 less/more then the crosswind is half, and if it has 90 difference then it is the whole because it comes directly from the side. It is correct. You also said that If it is around a 60 difference, then it cannot be equal to the whole wind because it must be either less than the whole of the wind speed or more than the half, so the second calculation you mentioned is not correct as obvious.
The easiest way of calculating the crosswind is to use sin/cos stuff. For example;
Sin(the difference between the Wind direction and the aircraft's Direction) x Wind Speed = Crosswind
If the heading is 060
The wind comes from 030 with 10 kts
Sin30 x 10 = 5 kts is the crosswind
Likewise, Cosinus gives the Headwind.
Regards