Let's step through it slowly and with plenty of examples, shall we?
First off, LOS is always reciprocal. So if I can see you, you can always see me.
Above, we have a very basic situation. The T-64 and the Abrams have nothing in between except clear ground. They both can see and fire at each other with no problem. They both have LOS to each other.
To check LOS, just draw a thread (my preference is a broken elastic band) from the center of the target unit hex to the center of the firing unit hex. If the thread (or elastic or whatever) passes through a town or forest hex (it doesn't have to go through the center - just any part of it at all except the hexside) then the sighting is blocked.
In this case above LOS is blocked. Two rough terrain hexes or two wreck hexes (or any combination of the two, such as in the case above) serve to block LOS. Neither the Bradley nor the T-80 can see or fire at each other.
LOS is not blocked in the example above. LOS that only passes alongside a forest hexside (Y13), does not block line of sight.
LOS is blocked when it passes along the hexside split between two blocking hexes. In the case above the hexside between T3 and T4 has blocking terrain on either side (forest in hex T3 and city in T4). Neither unit can see or fire at each other in the case above.
Of course, hills also block LOS, as in the case above.
I think this is pretty straightforward so far so let's move things up a bit by talking about LOS and elevation.
LOS is not blocked in the example above. The T-80 is on the edge of a hill in Z3 looking down at the Bradley in X4. They can see each other and fire without problem.
LOS is blocked above. An intervening hill hex (Z3) blocks LOS between another hill hex (AA3) and a ground level unit (Y4).
LOS is not blocked in the example above. A unit on a hill hex can sight another unit on a hill hex. Both the Bradley and T-80 can fire at each other in the above example. Fire away! This bends the definition of "hill" a bit but if you can imagine them more as ridges then it starts to make better sense.
In the example above, LOS is okay. Both units can sight each other and fire even though they are both set back from the edge of the hillside. You can see now that thinking about the hills as plateaus or ridges makes more sense.
LOS is blocked in the example above. The units could normally fire at each other but the forest hex in U8 blocks line of sight.
LOS is blocked in the above example. Similar to forest hexes, town or city hexes cast a "two hex blocking shadow"when LOS passes from ground level to a higher elevation. IN this case, the hex S5 blocks LOS.
This concept of LOS shadows can be a little bit tricky at first so let's talk a bit more about it.
|EX 1. LOS BLOCKED EX.2 LOS BLOCKED EX. 3 LOS NOT BLOCKED|
In the far left diagram, the town hex in S5 casts a hex shadow into S4. No LOS exists. In the middle diagram, since a town hex shadow is cast for two hexes when viewed from a higher elevation, the LOS is still blocked even though the Bradley is now in S3. Finally, in our far right diagram, the Bradley and the T-80 now have LOS and can fire at each other as the Bradley is out of the two hex blocking shadow. Note that wrecks do not cast a blocking shadow.
I think that covers most, if not all, of the potential LOS situations. If you have any more questions or if I have missed something, please post a comment.